比较python中具有unicode字符的字符串

问题描述

这是子字符串Ritē

我有两个字符串,一个来自zipfile提取文件名。我使用filename.encode('cp437').decode('utf-8')来正确提取所有路径。使用.plistplistlib.readplist()中读取另一个。两者均使用print()正确打印。但是,它们在比较中并不相同。我试图用utf-8对其进行编码,如下所示:

解决方法

根据评论,听起来这就是您要寻找的内容:

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