【问题标题】: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
>>>