0

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

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

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

4

2 回答 2

6

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

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

但是您首先必须弄清楚字节串的编码是什么。

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

u'Technical Diploma (±12 years)'

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

于 2012-09-03T19:44:03.610 回答
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
>>> 
于 2012-09-03T19:47:31.380 回答