Python で、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']
もちろん、すべての文字を反復処理して手動で置換することもできますが、効率的ではなく、特殊なケースの半分を見逃したり、間違いを犯したりすることは間違いありません。