在Python中是否有一种标准化方式来标准化unicode字符串,以便它只理解可用于表示它的最简单的unicode实体?正常化Unicode
我的意思是,这样会将一个序列像['LATIN SMALL LETTER A', 'COMBINING ACUTE ACCENT']
翻译为['LATIN SMALL LETTER A WITH ACUTE']
?
看到的问题是:
>>> import unicodedata
>>> char = "á"
>>> len(char)
1
>>> [ unicodedata.name(c) for c in char ]
['LATIN SMALL LETTER A WITH ACUTE']
但现在:
>>> char = "á"
>>> len(char)
2
>>> [ unicodedata.name(c) for c in char ]
['LATIN SMALL LETTER A', 'COMBINING ACUTE ACCENT']
我当然可以,遍历所有的字符和做手工更换等,但它不是高效率,我敢肯定我会错过一半的特殊情况,并犯错误。
在这些形式中,NFC最接近符合要求“它只理解可用于表示它的最简单的unicode实体”被解释为指的是最小数量的Unicode代码点。然而,NFC也影响其他事物,例如,用他们的规范等同替换字符。要仅执行*最小化部分,恐怕你必须自己编写它。 – 2013-05-09 20:20:35