Python 使用两个具有相同字符的分解对象断言True

Python 使用两个具有相同字符的分解对象断言True,python,python-3.x,Python,Python 3.x,我有两个unicode字符,都有相同的含义。compat字符是对origin字符的引用,这说明两者应该是相同的值,但当我试图断言它们与某个条件相等时,它会返回False origin=ᅢ' # 韩文信函:AE 同胞ㅐ' # 韩文信函:AE 打印('origin',ascii(origin)) 打印('compat',ascii(compat),'\n') 分解_origin=unicodedata.decomposition(origin) 分解\u compat=unicodedata.d

我有两个unicode字符,都有相同的含义。
compat
字符是对
origin
字符的引用,这说明两者应该是相同的值,但当我试图断言它们与某个条件相等时,它会返回
False

origin=ᅢ'  # 韩文信函:AE
同胞ㅐ'  # 韩文信函:AE
打印('origin',ascii(origin))
打印('compat',ascii(compat),'\n')
分解_origin=unicodedata.decomposition(origin)
分解\u compat=unicodedata.decomposition(compat)
打印(“分解:原点”,分解原点)
打印('decompose:compat',decompose\u compat',\n')
#预期输出:真
打印(分解\u原点==分解\u坐标)
origin'\u1162'
compat'\u3150'
分解:起源
分解:compat 1162
假的
要使它们具有可比性:

从Unicode数据导入规范化
原点='\u1162'
compat='\u3150'
对于('NFC','NFD','NFKC','NFKD')中的正常形式:
打印(标准格式,ascii(标准化(标准格式,原点+'='+compat)))
打印(标准化(标准格式,原点)=标准化(标准格式,兼容))
#NFC'\u1162==\u3150'
#假的
#NFD'\u1162==\u3150'
#假的
#NFKC'\u1162==\u1162'
#真的
#NFKD'\u1162==\u1162'
#真的

NFKC
NFKD
都执行“兼容性分解,即用其等价物替换所有兼容性字符”。
NFKC
normal form也适用于规范组合。

您对此有何疑问?@mkrieger1我找到了一个库,但希望找到一个没有第三方依赖关系的直接解决方案。您的问题是“如何将这些字符进行相等比较”@MisterMiyagi是。
unicodedata.normalize('NFKD',origin)==unicodedata.normalize('NFKD',compat)
非常感谢您。我之前坚持使用“NFC”,但从来没有机会看到“NFKD”,我的错。