2011-12-03 86 views
2

我正在寫一個小抄本,它會給我一些以希伯來語(html)編寫的以色列有線公司網站的更新。該網頁使用縮寫,我想改回到完整的單詞。我已經把一條線在我的Python文件比較python中的希伯來語字符串

#coding=utf8 

的頭部,並在代碼

if w = "ה.": print (w) 

一條線,但我得到一個警告:

wm.py:26: UnicodeWarning:Unicode等於比較未能將 這兩個參數轉換爲Unicode - 將它們解釋爲不等於w ==「ה。」:print(w)

所以我試圖把縮寫在一個文件中,並從那裏加載它們,但密鑰加載\xd7\x94.'而不是希伯來字母(而compraison失敗)

所以,我怎麼能比較字符串?

謝謝。

回答

5

你必須將其標記爲Unicode字符串:

if w == u"ה.": print (w) 

現在只需要去工作。

編輯:讓我說明一點:變量w也應該是一個unicode字符串(w = u"...")。

2

它有助於發佈說明問題的完整示例,以及您正在使用的Python版本。例如,print(w)通常意味着Python 3,但也適用於Python 2。

我在Python 2.7中用下面的代碼重現了你的錯誤。請注意,coding行聲明源文件編碼爲,因此該文件必須從支持該文件的編輯器保存爲UTF-8。

#coding=utf8 
w = u'ה.' 
if w == "ה.": 
    print (w) 

結果:

C:\y.py:3: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal 
    if w == "ה.": 

比較字節串Unicode字符串時,會出現問題。 Python試圖使用默認的「ascii」編解碼器將字節串強制爲一個Unicode字符串,該字節串實際上是根據源編碼以UTF-8編碼的。務必確保爲Unicode字符串轉換爲Unicode字符串和字節字符串比較字節字符串:

要修復,標記字符串爲Unicode:

if w == u"ה.":