如何比较两个非ASCII字符串

时间:2012-09-03 19:41:08

标签: python unicode python-2.7 ascii

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

  

UnicodeWarning:Unicode等同比较无法将两个参数都转换为Unicode - 将它们解释为不等等

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

2 个答案:

答案 0 :(得分:6)

您的一个字符串不是unicode值,而是bytestring。您希望首先通过解码将其转换为unicode:

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

但是你必须首先弄清楚bytestring的编码方式。

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

u'Technical Diploma (±12 years)'

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

答案 1 :(得分:1)

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
>>>