Python 如何比较两个非ASCII字符串

Python 如何比较两个非ASCII字符串,python,unicode,python-2.7,ascii,Python,Unicode,Python 2.7,Ascii,我想将技术文凭(±12年)与浏览器中显示的相同字符串进行比较。我正在用Python运行一个webdriver测试,它从db获取技术文凭(±12年),并尝试与浏览器中的字符串进行比较。当我尝试比较时,我得到了这个错误 Unicode相等比较无法将两个参数转换为Unicode-将它们解释为不相等 如何在Python中比较这些非ASCII字符串?其中一个字符串不是unicode值,而是bytestring。要将其转换为unicode,请先对其进行解码: 'Non-ASCII value contain

我想将
技术文凭(±12年)
与浏览器中显示的相同字符串进行比较。我正在用Python运行一个webdriver测试,它从db获取
技术文凭(±12年)
,并尝试与浏览器中的字符串进行比较。当我尝试比较时,我得到了这个错误

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


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

其中一个字符串不是unicode值,而是bytestring。要将其转换为unicode,请先对其进行解码:

'Non-ASCII value containing UTF8: \xc2\xb1'.decode('utf8')
但是您首先必须弄清楚bytestring的编码是什么

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


但是,我强烈建议您在继续之前先阅读一下。

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