سؤال

واني اسعى الى استخدام وظيفة تعيين في إلى AppEngine، لإعداد قائمة مع عناصر فريدة من نوعها. أنا اصطدم بعقبة عندما كتب رمز الثعبان الذي يعمل بشكل جيد في وعاء الثعبان ولكن ليس في إلى AppEngine + جانغو

وهذا ما أنوي القيام به (ركض هذا البرنامج النصي في 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):

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

وأنا واثق من أن قائمة () هي جذر مشاكلي. يمكن لأي شخص أن توحي لماذا يحدث هذا. يرجى تشير أيضا إلى البدائل. والهدف من ذلك هو إزالة التكرارات من القائمة.

والشكر

هل كانت مفيدة؟

المحلول

ويبدو أنك نفذت الدالة القائمة الخاصة (). يجب أن تكون البيانات 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 جميع أحداثا مطابقة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top