在我的项目中,我需要处理许多不同的语言,其中一种是日语。 (我自己不说)。
我需要比较两个字符串,看看它们是否相等。一个字符串来自我的计算机上的文件名,另一个字符串来自该确切文件的下载链接。这两个字符串应该是相同的。
原来相同的字符可以用不同的方式编码。
查看字符バ,它可以用两种方式编码。
\xe3\x83\x90
\xe3\x83\x8f\xe3\x82\x99
2号实际上是一个ハ和一个゙,它们会产生相同的字符。因此,即使它们应该相等,一些字符串也会被认为是不同的。 Python告诉我
ネバーランド
与
不同ネバーランド
我尝试过的事情:
我没有检查确切的相等性,而是尝试使用相似性:
difflib.SequenceMatcher(None, string1, string2).ratio()
遗憾的是,这不够精确。我也试过配置垃圾,但我不能让它足够精确。
搞乱解码和编码功能,希望它会神奇地消失。
我看到有些类似的问题,但没有好的解决方案,我担心没有,除非我手动过滤掉这些特殊情况。
答案 0 :(得分:0)
归一化为其组合形式。但是使用unicode
s,当然不是UTF-8。
>>> u'ネバーランド' == u'ネバーランド'
False
>>> unicodedata.normalize('NFC', u'ネバーランド') == u'ネバーランド'
True