2012-09-03 40 views
0

我想比較Technical Diploma (±12 years)與瀏覽器中存在的相同字符串。我正在Python中運行一個webdriver測試,它從db中獲取Technical Diploma (±12 years)並嘗試與瀏覽器中存在的字符串進行比較。當我嘗試比較我收到此錯誤如何比較兩個非ASCII字符串

UnicodeWarning:統一等於比較未能兩個參數爲Unicode轉換 - 將它們解釋爲是不平等的

如何比較這些非ASCII字符串蟒蛇?

回答

6

你的一個字符串不是一個unicode值,而是一個字節串。你想先對其進行解碼將其轉換爲Unicode:

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

但你必須弄清楚什麼編碼的字節字符串是擺在首位。

如果您已經定義了源文件編碼和你所定義的字符串作爲代碼中的文字,請確保您在與u''前綴字符串將其定義爲一個Unicode文本:

u'Technical Diploma (±12 years)' 

我但強烈建議您在繼續之前閱讀Python Unicode HOWTO

1

Python正在告訴你這個問題:首先轉換爲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 
>>>