Pythonで標準的な方法でユニコード文字列を正規化して、それを表現するために使用できる最も単純なユニコードエンティティのみを理解しますか?ユニコードを正規化する
つまり、['LATIN SMALL LETTER A', 'COMBINING ACUTE ACCENT']
のようなシーケンスを['LATIN SMALL LETTER A WITH ACUTE']
に変換するものは何ですか?私は、もちろん、など、すべての文字を反復処理し、手動交換を行うことができ
>>> char = "á"
>>> len(char)
2
>>> [ unicodedata.name(c) for c in char ]
['LATIN SMALL LETTER A', 'COMBINING ACUTE ACCENT']
が、それはありません:今
>>> import unicodedata
>>> char = "á"
>>> len(char)
1
>>> [ unicodedata.name(c) for c in char ]
['LATIN SMALL LETTER A WITH ACUTE']
しかし:問題です
参照してください。効率的で、私は特別なケースの半分を逃して間違いを犯すとはかなり確信しています。
これらの形式の中で、NFCは、「それを表現するために使用できる最も単純なUnicodeエンティティのみを含む」という要件を満たすのに最も近いものです。これは、最小のUnicodeコードポイントを参照するものとして解釈されます。しかし、NFCは他のものにも影響を与える。文字を正規の同等物で置き換えます。 *最小化部分のみを実行するには、あなた自身でプログラムする必要があります。 –