簡體   English   中英

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

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM