比较python中的希伯来字符串

时间:2011-12-03 22:20:43

标签: python string unicode hebrew

我正在写一个小小的scirpt,它将给我一些以希伯来语(html)编写的以色列有线电视公司网站的更新。网页使用缩写,我想更改回完整的单词。我在我的python文件的头部放了一行

#coding=utf8  

和代码中的一行

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

但我收到警告:

  

wm.py:26:UnicodeWarning:Unicode等同比较无法转换   Unicode的两个参数 - 如果w将它们解释为不相等   ==“ה。”:print(w)

所以我试着将缩写放在一个文件中,然后从那里加载它们,但是密钥加载为\xd7\x94.'而不是希伯来字母(并且会因为失败)

那么,我该如何比较字符串?

感谢。

2 个答案:

答案 0 :(得分:5)

您必须将其标记为unicode字符串:

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

现在就可以了。

编辑:让我说明一点:变量w也应该是一个unicode字符串(w = u"...")。

答案 1 :(得分: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"ה.":