list () не работает в appengine? - PullRequest
0 голосов
/ 16 июня 2009

Я пытаюсь использовать функцию set в appengine, чтобы подготовить список с уникальными элементами. Я столкнулся с проблемой, когда написал код на python, который отлично работает в оболочке python, но не в appengine + 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       

Требуемый вывод (получил этот вывод в IDLE):

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

Теперь, когда я делаю что-то эквивалентное в моем файле views.py в appengine:

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

Я уверен, что список () - корень моих проблем. Кто-нибудь может подсказать, почему это происходит. Пожалуйста, также предложите альтернативы. Цель состоит в том, чтобы удалить дубликаты из списка.

Спасибо

1 Ответ

8 голосов
/ 16 июня 2009

Похоже, вы реализовали свою собственную функцию list (). Его операторы return должны находиться в строке 208 вашего файла (views.py). Вы должны переименовать вашу list() функцию на что-то другое (даже 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 всех совпадений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...