동일한 문자열이 파이썬에서 '=='로 false를 반환하는 이유는 무엇입니까?
-
18-09-2019 - |
문제
데이터 문자열은 소켓 연결을 통해 수신됩니다. 액션 변수 = '식별'인 첫 번째 예제를 받으면 작동합니다. 그러나 액션 변수 = 'msg'인 두 번째 예제를 받으면 비교되지 않습니다.
그리고 소켓 클라이언트 대신 Telnet을 사용할 때 가장 기괴한 것은 성공적으로 비교됩니다. 그러나 문자열은 동일합니다 ... 문자열이 같은 방식으로 인코딩되지 않을 가능성이 있습니까? 어떻게 알 수 있습니까?
data example:
data = 'IDENTIFY 54143'
or
data = 'MSG allo'
action = data.partition(' ')[0]
if action == "MSG":
self.sendMessage(data)
elif action == "IDENTIFY":
self.sendIdentify(data)
else:
print "false"
해결책
문제를 재현 할 수 없습니다. 디버깅하려면 인쇄하거나 기록하십시오 repr()
의 data
그리고 action
: 이것은 아마도 당신에게 원인을 보여줄 것입니다 (아마도 가시 불가능한 바이트 바이트가 들어갔을 것입니다. data
, 당신이 그것을 얻는 방법 [[[당신이 우리를 보여주지 않음]]을 기준으로 action
).
제휴하지 않습니다 StackOverflow