2009-06-16 3 views
0

Я пытаюсь использовать функцию set в appengine, чтобы подготовить список с уникальными элементами. Я ударил загвоздка, когда я написал код питона, который отлично работает в оболочке Python, но не в AppEngine + Джангоlist() не работает в appengine?

Это то, что я намерен делать (запустили этот сценарий в IDLE):

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

желаемый выход (получил этот выход в IDLE):

['[email protected]', '[email protected]', '[email protected]'] 

Теперь, когда я сделать что-то эквивалентное в моем файле 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=' [email protected], [email protected],, , [email protected] ' 
    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))) 

я получаю желаемый результат в соответствующей веб-странице:

[email protected], [email protected],, , [email protected] 

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

Благодаря

+0

Извините .. список() есть проблема. Вопрос остается в силе, хотя – Dhushyanth

ответ

8

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

EDIT: Кроме того, вы можете изменить вас регулярное выражение, например:

import re 
value=' [email protected], [email protected],, , [email protected] ' 
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\.\-_][email protected][\w\d\.\-_]+', value)) 

print value 

re.findall() возвращает list всех соответствующих вхождений.

+0

спасибо ... что, по-видимому, является причиной проблемы. дурак я – Dhushyanth

Смежные вопросы