繁体   English   中英

python-编码,打印无法弄清楚

[英]python - encoding, print can't figure out

这两个字符串在打印时看起来相同,但在引擎盖下不相等。 我需要通过此键选择一个字典项,但会收到keyError,因为它们显然不匹配。 我试过使用str.encode(“ utf-8”)str.decode(“ utf-8”)unicode(str,“ utf-8”)repr() 没有任何帮助。 如何使它们像打印时一样平等? 谢谢。

>>> str1 = u"extra\u00f1ar"
>>> str2 = u"extrañar"
>>> str1
u'extra\xf1ar'
>>> str2
u'extran\u0303ar'
>>> print str1
extrañar
>>> print str2
extrañar
>>> str1 == str2
False

您可以尝试使用unicodedata.normalize ,但不能保证它能正常工作:

>>> str1 = u'extra\xf1ar'
>>> str2 = u'extran\u0303ar'
>>> str1 == str2
False
>>> print str1; print str2
extrañar
extrañar

因此,请注意:

>>> import unicodedata
>>> unicodedata.normalize('NFC', str1)
u'extra\xf1ar'
>>> unicodedata.normalize('NFC', str2)
u'extra\xf1ar'
>>> unicodedata.normalize('NFC', str2) == unicodedata.normalize('NFC', str2)
True
>>> print unicodedata.normalize('NFC', str2); print unicodedata.normalize('NFC', str2)
extrañar
extrañar

一个警告

即使将两个unicode字符串归一化并在人类读者看来是相同的,但如果一个字符串包含组合字符而另一个字符串没有组合,则它们可能不相等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM