【问题标题】:comparing hebrew strings in python比较python中的希伯来语字符串
【发布时间】:2012-01-12 09:04:03
【问题描述】:

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

#coding=utf8  

和代码中的一行

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

但我收到警告:

wm.py:26: UnicodeWarning: Unicode 相等比较转换失败 Unicode 的两个参数 - 如果 w 将它们解释为不相等 == "ה.": 打印 (w)

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

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

谢谢。

【问题讨论】:

    标签: python string unicode hebrew


    【解决方案1】:

    您必须将其标记为 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"ה.":
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-03-23
        • 1970-01-01
        • 1970-01-01
        • 2015-07-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多