2013-07-18 8 views
-2

Почему я не могу использовать сравнение строк в моем состоянии? Я работаю на Python.Str to str сравнение

myjson = список словарей

if myjson[row]['languages'] == '' | myjson[row]['languages'] == 'english': pass 
else: gen_dict['languages'].append(myjson[row]['languages']) 

Ошибка:

Traceback (most recent call last): 
    File "/private/var/folders/jv/9_sy0bn10mbdft1bk9t14qz40000gn/T/Cleanup At Startup/gc_all_del_dup.txt-395854237.266.py", line 157, in <module> 
    gen_nondup(f_l) 
    File "/private/var/folders/jv/9_sy0bn10mbdft1bk9t14qz40000gn/T/Cleanup At Startup/gc_all_del_dup.txt-395854237.266.py", line 132, in gen_nondup 
    if myjson[row]['languages'] == '' | myjson[row]['languages'] == 'english': pass 
TypeError: unsupported operand type(s) for |: 'str' and 'str' 
+1

Потому что '|' побитовое ИЛИ возможно? Возможно, вы захотите снова прочитать учебник Python, вы постоянно сталкиваетесь с недоразумениями о синтаксисе. –

+0

Концерн должным образом отметил. Ошибка словаря была ужасающей, но я объяснил, почему я с ней справился. И я думаю, что исправить это, скорее, чашку кофе, чтобы разбудить меня. Что касается этого, не уверен, что случилось с тем, что кто-то указал на синтаксическую ошибку, когда я думал, что это проблема типа или что-то в этом роде. – goldisfine

+1

Я вижу, что сообщение об ошибке сбивает с толку, особенно когда оно должно действительно читать: * +++ OUT OF CAFFEINE ERROR +++ REDO FROM START +++ * :-) –

ответ

4

Вы должны использовать or не |. or является логическим или | является оператором бит, который не поддерживается str.

И рекомендую использовать: if myjson[row]['languages'] in ['', 'english']: pass, это немного быстрее и удобнее.

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