2012-09-03 5 views
0

Technical Diploma (±12 years)과 브라우저에있는 동일한 문자열을 비교하고 싶습니다. 파이썬에서 dbd에서 Technical Diploma (±12 years)을 가져 와서 브라우저에있는 문자열과 비교하려고하는 웹 드라이버 테스트를 실행하고 있습니다. 내가 비교하려고 할 때이 오류가 무엇입니까비 ASCII 문자열 두 개를 비교하는 방법

UnicodeWarning : 유니 코드가 동일 비교는 유니 코드로 두 인수를 변환하는 데 실패 - 나는이 비 ASCII 문자열의 비교 어떻게

불평등 한 것으로이를 해석 파이썬?

답변

6

문자열 중 하나는 유니 코드 값이 아니며 바이트 문자열입니다. 먼저이를 디코딩하여 유니 코드로 그것을 변환 할 :

'Non-ASCII value containing UTF8: \xc2\xb1'.decode('utf8') 

하지만 당신은 bytestring을 인코딩하는 첫 번째 장소에서의 무엇인지 파악해야합니다.

u'Technical Diploma (±12 years)' 

I : 당신은 소스 파일 인코딩을 정의하고 코드에서 문자로 문자열을 정의하는 경우

, 당신이 u''로 문자열을 앞에 붙여 유니 코드 문자로 정의해야합니다 그러나 진행하기 전에 Python Unicode HOWTO에서 읽어보실 것을 강력히 권장합니다.

1

파이썬이 문제를 말하고 있습니다. 먼저 UTF-8로 변환하십시오.

예 :

>>> u1='Technical Diploma (±12 years)' 
>>> u2=u'Technical Diploma (±12 years)' 
>>> u1==u2 
__main__:1: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal 
False 
>>> u1.decode('utf-8')==u2 
True 
>>> 
관련 문제