I am trying to use set function in App Engine, to prepare a list with unique elements. I hit a snag when i wrote a Python code which works fine in the Python Shell but not in App Engine + Django
This is what i intend to do(ran this script in 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
The desired output is(got this output in IDLE):
['dash@ben', 'abc@ac.com.edu', 'r.dushaynth@gmail.com']
Now when I do something equivalent in my views.py file in App Engine:
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,
})
I get this error while going to the appropriate page(pasting the traceback):
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'
on commenting out:
#value = list(set(re.split('^\s*|\s*,+\s*|\s*$', value)))
I get the desired output in the appropriate webpage:
r.dushaynth@gmail.com, dash@ben,, , abc@ac.com.edu
I am sure the list() is the root of my troubles. Can anyone suggest why this is happening. Please also suggest alternatives. The aim is to remove duplicates from the list.
Thanks!
It seems like you implemented your own list() function. Its
returnstatements should be at line 208 of your file (views.py). You should rename yourlist()function to something else (evenlist_()).EDIT: Also you can change you regexp, like this:
re.findall()returns alistof all matched occurences.