[英]list() doesn't work in Google App Engine?
我正在嘗試在 App Engine 中使用 set function 來准備一個包含獨特元素的列表。 當我寫了一個 Python 代碼時,我遇到了一個障礙,該代碼在 Python Shell 中運行良好,但在 App Engine + Django 中運行良好
這就是我打算做的(在 IDLE 中運行這個腳本):
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
所需的 output 是(在 IDLE 中得到這個 output):
['dash@ben', 'abc@ac.com.edu', 'r.dushaynth@gmail.com']
現在,當我在 App Engine 的 views.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)))
我在相應的網頁中獲得了所需的 output:
r.dushaynth@gmail.com, dash@ben,, , abc@ac.com.edu
我確信 list() 是我麻煩的根源。 任何人都可以建議為什么會這樣。 還請提出替代方案。 目的是從列表中刪除重復項。
謝謝!
看起來你實現了自己的 list() function。它的return
語句應該在你的文件 (views.py) 的第 208 行。 您應該將list()
function 重命名為其他名稱(甚至list_()
)。
編輯:你也可以改變你的正則表達式,像這樣:
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
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.