繁体   English   中英

比较python中的希伯来语字符串

[英]comparing hebrew strings in python

我正在写一个简短的摘要,它将为我提供以希伯来语(html)编写的以色列电缆公司网站的一些更新。 网页使用缩写,我想改回完整的单词。 我在python文件的开头放置了一行

#coding=utf8  

和代码中的一行

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

但我得到一个警告:

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

因此,我尝试将缩写词放在文件中并从那里加载它们,但是键被加载为\\xd7\\x94.' 而不是希伯来语字母(比较失败)

那么,如何比较字符串呢?

谢谢。

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

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

现在可以了。

编辑:让我指出一个明显的事实:变量w也应该是一个unicode字符串( w = u"..." )。

它有助于发布一个完整的示例来说明问题,以及所使用的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"ה.":

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM