在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