Unicode の正規化
Unicode 文字列には、2 つ以上のコード ポイントのシーケンスとして表される複合文字が含まれることがよくあります。これらの複合体は、より単純な単一コードポイントのエンティティに正規化できる場合があります。
問題
unicodedata モジュールは、Unicode 文字情報にアクセスする便利な方法を提供します。ただし、手動で文字を反復処理し、複合文字列を非複合文字列に置き換えるのは非効率的でエラーが発生しやすい可能性があります。
解決策
Unicode 文字列を正規化し、複合文字列を変換するには最も単純な形式にするには、unicodedata.normalize() 関数を「NFC」(標準形式合成) オプションとともに使用します。この形式は、合成文字を事前に合成された文字で置き換えます。
例:
>>> import unicodedata >>> char = "á" >>> unicodedata.normalize('NFC', char) == "á" True
逆に、'NFD' (標準形式分解) オプションは、事前に合成された文字を分解された形式に変換します。
>>> char = "á" >>> unicodedata.normalize('NFD', char) == "a\u0301" True
追加の正規化形式
NFC と NFD に加えて、次の 2 つの追加の正規化形式があります:
例:
>>> char = "Ⅷ" >>> unicodedata.normalize('NFKC', char) == "VIII" True
注: 正規化は常に行われるわけではありません。可逆;文字を NFD に分解してから NFC に再構成すると、必ずしも元の文字シーケンスが得られるとは限りません。
以上がPython で Unicode 文字列を正規化して複合文字を簡素化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。