list()在Google App Engine中不起作用?

2024-09-29 23:32:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用appengine中的set函数,准备一个具有独特元素的列表。我在编写Python代码时遇到了一个问题,该代码在pythonshell中可以正常工作,但在appengine+Django中却不行

我打算这样做(在空闲状态下运行此脚本):

import re
value='   r.dushaynth@gmail.com, dash@ben,,  , abc@ac.com.edu    '
value = value.lower()
value = list(set(re.split('^\s*|\s*,+\s*|\s*$', value)))
if (value[0] == ''):
    value.remove('')
print value       

期望的输出是(在空闲状态下获得该输出):

^{pr2}$

现在当我在视图.py应用程序中的文件引擎:

import os
import re
import django
from django.http import HttpResponse
from django.shortcuts import render_to_response # host of other imports also there
def add(request):

    value='   r.dushaynth@gmail.com, dash@ben,,  , abc@ac.com.edu    '
    value = value.lower()
    value = list(set(re.split('^\s*|\s*,+\s*|\s*$', value)))
    if (value[0] == ''):
        value.remove('')


    return render_to_response('sc-actonform.html', {
        'value': value,
    })

我在转到适当的页面(粘贴回溯)时遇到此错误:

Traceback (most recent call last):
File "G:\Dhushyanth\Google\google_appengine\lib\django\django\core\handlers\base.py" in get_response
  77. response = callback(request, *callback_args, **callback_kwargs)
File "G:\Dhushyanth\development\AppengineProjects\trunk_sanjhachoolha\sandbox\dushyanth\sanjhachoolha\views.py" in add
  148. value = list(set(re.split('^\s*|\s*,+\s*|\s*$', value)))
File "G:\Dhushyanth\development\AppengineProjects\trunk_sanjhachoolha\sandbox\dushyanth\sanjhachoolha\views.py" in list
  208. return respond(request, None, 'sc-base', {'content': responseText})
File "G:\Dhushyanth\development\AppengineProjects\trunk_sanjhachoolha\sandbox\dushyanth\sanjhachoolha\views.py" in respond
  115. params['sign_in'] = users.create_login_url(request.path)

  AttributeError at /sanjhachoolha/acton/add
  'set' object has no attribute 'path'

在评论中:

#value = list(set(re.split('^\s*|\s*,+\s*|\s*$', value)))

我在适当的网页上得到了想要的输出:

r.dushaynth@gmail.com, dash@ben,, , abc@ac.com.edu

我确信清单()是我麻烦的根源。有人能告诉我为什么会这样吗。也请提出备选方案。目的是从列表中删除重复项。在

谢谢!在


Tags: djangoinpyimportrecomvalueresponse
1条回答
网友
1楼 · 发布于 2024-09-29 23:32:43

似乎您实现了自己的list()函数。它的return语句应该在文件的第208行(视图.py). 您应该将list()函数重命名为其他函数(甚至是list_())。在

编辑:也可以更改regexp,如下所示:

import re
value='   r.dushaynth@gmail.com, dash@ben,,  , abc@ac.com.edu    '
value = value.lower()

#value = list(set(re.split('^\s*|\s*,+\s*|\s*$', value)))
#if (value[0] == ''):
#    value.remove('')

value = set(re.findall(r'[\w\d\.\-_]+@[\w\d\.\-_]+', value))

print value

re.findall()返回所有匹配事件的list。在

相关问题 更多 >

    热门问题