2015-05-11 5 views
-2

Я получил хороший ответ, как реорганизовать мой код в codereview.Как запрограммировать обновленную версию моего кода?

https://codereview.stackexchange.com/questions/90378/how-should-i-refactor-my-insert-class/90385#90385

Но когда я пытаюсь кода моей выпуски IDE ошибку: Unresolved reference w и ']' expected. Что не так с кодом? Я все еще изучаю python, поэтому я не уверен, что такое ошибка, это может быть опечатка.

BAD_WORDS = ['penis', 'black money', 'escort'] 

if any[w in text or w.upper() in text or w.capitalize() in text 
     for w in BAD_WORDS]: 
    self.response.out.write('REMOVED') 
    return 
+4

'any' является функцией, так что вам нужно в круглые скобки списка понимания:' если ([ш в тексте или w.upper() в тексте или ш .capitalize() в тексте для w в BAD_WORDS]): ' – EdChum

+0

@JamesMills закрывающая квадратная скобка находится в следующей строке: – EdChum

+1

Вы используете скобки вместо круглых скобок. –

ответ

3

Прежде всего, необходимо круглые скобки для вызова функции. Во-вторых, вы можете уменьшить свой код на следующее:

any(w.lower() in text.lower().split() for w in BAD_WORDS) 
+1

Это намного опрятный +1 – EdChum

+2

Я бы изменил 'w.lower()' на просто 'w' и переместил' map (str.lower, text) 'out выражения генератора. – gatto

+0

Это не работает. 'descriptor 'lower' требует объекта 'str', но получил 'unicode'' –

2

any является вызовом функции, так что вам нужно обернуть в скобки список вашего понимания:

BAD_WORDS = ['penis', 'black money', 'escort'] 

if any(w in text or w.upper() in text or w.capitalize() in text 
       for w in BAD_WORDS): 
    self.response.out.write('REMOVED') 
    return 

Что вы имели:

if any[w in text or w.upper() in text or w.capitalize() in text 
       for w in BAD_WORDS]: 

недействителен

+3

На самом деле квадратные скобки теперь стали излишними. – kirelagin

+2

Вы также можете уменьшить код на * lowercasing * все. –

+0

Я по-прежнему получаю некоторую ошибку от pyCharm при попытке кода выше. В конце слова «текст» он говорит «]« ожидаемый », а также красная квадратная скобка на' BAD_WORDS]. Что не так? –

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