2009-06-16 6 views
0

J'essaie d'utiliser la fonction set dans appengine, pour préparer une liste avec des éléments uniques. J'ai frappé un accroc quand je l'ai écrit un code python qui fonctionne très bien dans la coquille de python, mais pas dans AppEngine + djangolist() ne fonctionne pas dans appengine?

ce que je compte faire (RAN ce script dans 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  

Le sortie désirée est (a cette sortie en IDLE):

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

maintenant, quand je fais quelque chose d'équivalent dans mon fichier views.py dans 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, 
    }) 

Je reçois cette erreur en allant à la page appropriée (coller le retraçage):

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' 

sur commentant:

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

-je obtenir la sortie désirée dans la page web appropriée:

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

Je suis sûr que la liste() est la racine de mes problèmes. Quelqu'un peut-il suggérer pourquoi cela se produit? S'il vous plaît également suggérer des alternatives. L'objectif est d'éliminer les doublons de la liste.

Merci

+0

Désolé .. la liste() est le problème .. La question est toujours valide si – Dhushyanth

Répondre

8

Il semble que vous avez implémenté votre propre fonction list(). Ses instructions return doivent figurer à la ligne 208 de votre fichier (views.py). Vous devez renommer votre fonction list() en autre chose (même list_()).

EDIT: vous pouvez vous changer regexp, comme aussi ceci:

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() retourne un list de toutes les occurences correspondantes.

+0

merci ... qui semble être la cause du problème. que je suis bête – Dhushyanth