동일한 문자열이 파이썬에서 '=='로 false를 반환하는 이유는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1493007

  •  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).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top