2011-12-03 48 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"ה.":