【问题标题】:How to compare two non-ASCII strings如何比较两个非ASCII字符串
【发布时间】:2012-09-03 19:41:08
【问题描述】:

我想将Technical Diploma (±12 years) 与浏览器中存在的相同字符串进行比较。我在 Python 中运行 webdriver 测试,它从数据库中获取 Technical Diploma (±12 years) 并尝试与浏览器中存在的字符串进行比较。当我尝试比较时出现此错误

UnicodeWarning:Unicode 相等比较未能将两个参数都转换为 Unicode - 将它们解释为不相等

如何在 Python 中比较这些非 ASCII 字符串?

【问题讨论】:

    标签: python unicode python-2.7 ascii


    【解决方案1】:

    您的其中一个字符串不是 unicode 值,而是字节串。您想通过先解码将其转换为 unicode:

    'Non-ASCII value containing UTF8: \xc2\xb1'.decode('utf8')
    

    但您首先必须弄清楚字节串的编码方式。

    如果您已经定义了源文件编码并且在代码中将字符串定义为文字,请确保通过在字符串前面加上 u'' 前缀将其定义为 Unicode 文字:

    u'Technical Diploma (±12 years)'
    

    不过,我强烈建议您在继续之前阅读Python Unicode HOWTO

    【讨论】:

      【解决方案2】:

      Python 告诉你问题:先转换为 UTF-8。

      例子:

      >>> u1='Technical Diploma (±12 years)'
      >>> u2=u'Technical Diploma (±12 years)'
      >>> u1==u2
      __main__:1: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
      False
      >>> u1.decode('utf-8')==u2
      True
      >>> 
      

      【讨论】:

        猜你喜欢
        • 2022-06-29
        • 2019-01-14
        • 1970-01-01
        • 2022-01-22
        • 1970-01-01
        • 2014-09-17
        • 1970-01-01
        • 2013-09-27
        • 2021-07-05
        相关资源
        最近更新 更多