在Python中比较希伯来字符串
我正在写一个小脚本,目的是从一个以希伯来语书写的以色列有线电视公司网站获取一些更新(网页是HTML格式的)。这个网页上使用了一些缩写,我想把它们改回完整的词。我在我的Python文件开头加了一行代码
#coding=utf8
在代码中也加了一行
if w = "ה.": print (w)
但是我收到了一个警告:
wm.py:26: UnicodeWarning: Unicode相等比较无法转换两个参数为Unicode - 解释为不相等 if w == "ה.": print (w)
所以我尝试把缩写放在一个文件里,然后从那里加载,但加载的键是 \xd7\x94.'
这样的形式,而不是希伯来字母(这样比较就失败了)
那么,我该如何比较这些字符串呢?
谢谢。
2 个回答
2
在提问时,最好提供一个完整的例子来说明你的问题,同时也要告诉我们你使用的Python版本。例如,print(w)
通常意味着你在用Python 3,但在Python 2中也可以用。
我在Python 2.7中用以下代码重现了你的错误。注意,coding
这一行是用来声明源文件编码的,所以这个文件必须从支持UTF-8的编辑器中保存为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"ה.":
5
你需要把它标记为一个unicode字符串:
if w == u"ה.": print (w)
这样就可以正常工作了。
编辑:让我说说显而易见的事情:变量 w
也应该是一个unicode字符串(w = u"..."
)。