Development Tip

Python 유니 코드 동등 비교 실패

yourdevel 2020. 12. 12. 12:33
반응형

Python 유니 코드 동등 비교 실패


이 질문은 Python에서 유니 코드 문자 검색 과 관련이 있습니다.

파이썬 코덱을 사용하여 유니 코드 텍스트 파일을 읽었습니다.

codecs.open('story.txt', 'rb', 'utf-8-sig')

그리고 그 안에있는 문자열을 검색하려고했습니다. 하지만 다음과 같은 경고가 표시됩니다.

UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal

유니 코드 문자열 비교의 특별한 방법이 있습니까?


==연산자를 사용하여 유니 코드 객체가 같은지 비교할 수 있습니다 .

>>> s1 = u'Hello'
>>> s2 = unicode("Hello")
>>> type(s1), type(s2)
(<type 'unicode'>, <type 'unicode'>)
>>> s1==s2
True
>>> 
>>> s3='Hello'.decode('utf-8')
>>> type(s3)
<type 'unicode'>
>>> s1==s3
True
>>> 

그러나 오류 메시지는 유니 코드 객체를 비교 하지 않는다는 것을 나타냅니다 . 다음과 같이 unicode객체를 str객체와 비교할 수 있습니다 .

>>> u'Hello' == 'Hello'
True
>>> u'Hello' == '\x81\x01'
__main__:1: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
False

유효한 UTF8 인코딩을 나타내지 않는 문자열과 유니 코드 개체를 비교하려고 시도한 방법을 참조하십시오.

귀하의 프로그램은 유니 코드 객체와 str 객체를 비교하고 있으며 str 객체의 내용은 유효한 UTF8 인코딩이 아닙니다. 이것은 당신 (프로그래머)가 어떤 변수가 불멸 상태인지, 어떤 변수가 UTF8을 보유하고 어떤 변수가 파일에서 읽은 바이트를 보유하는지 알지 못하는 결과로 보입니다.

http://nedbatchelder.com/text/unipain.html을 추천합니다 . 특히 "유니 코드 샌드위치"를 만드는 방법에 대한 조언이 있습니다.

참고 URL : https://stackoverflow.com/questions/18193305/python-unicode-equal-comparison-failed

반응형