问题描述
这是子字符串Ritē
我有两个字符串,一个来自zipfile
提取的文件名。我使用filename.encode('cp437').decode('utf-8')
来正确提取所有路径。使用.plist
从plistlib.readplist()
中读取另一个。两者均使用print()
正确打印。但是,它们在比较中并不相同。我试图用utf-8
对其进行编码,如下所示:
-
Rite\xcc\x84
-
Rit\xc4\x93
一个解释字符e,并且-顶部解释另一个'LATIN SMALL LETTER E WITH MACRON'
是否有人对此有任何建议,以便比较两个字符串?预先谢谢你
解决方法
根据评论,听起来这就是您要寻找的内容:
import unicodedata
foo = 'Rit\u0113'
bar = 'Rite\u0304'
print(foo,bar)
print(unicodedata.normalize('NFD',foo))
print(unicodedata.normalize('NFD',bar))
assert unicodedata.normalize('NFD',foo) == unicodedata.normalize('NFD',bar)
我选择NFD作为表格,但您可能更喜欢NFC。