2013-07-18 4 views
-2

내 조건에서 문자열 비교를 사용할 수없는 이유는 무엇입니까? 저는 파이썬으로 작업하고 있습니다.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

왜냐하면'|'은 비트 OR일까요? 파이썬 튜토리얼을 다시 읽고 구문에 대한 오해를 계속 피할 수 있습니다 .. –

+0

염려가 정당히 언급되었습니다. 사전 오류는 소름이 끼쳤다. 그러나 나는 왜 내가 그것에 걸려 넘어 졌는지 설명했다. 그리고 그 문제가 커피를 마시면 나를 깨울 확률이 더 높다고 생각합니다. 이것에 관해서는, 그것이 유형 문제 또는 무엇이라고 생각할 때 누군가가 문법 오류를 지적하게하는 것이 잘못되었다는 것을 확신하지 못한다. – goldisfine

+1

오류 메시지가 혼란 스럽습니다. 특히 읽어야 할 때 : * +++ CAFFEINE ERROR +++ REDO FROM START +++ * : * :-) –

답변

4

당신은 or하지 |를 사용해야합니다. orstr에서 지원되지 않는 비트 연산자 인 |입니다.

그리고 다음을 사용하는 것이 좋습니다 : if myjson[row]['languages'] in ['', 'english']: pass, 조금 빠르고 쉽습니다.

관련 문제