Python での Unicode の正規化: Unicode 表現の単純化
Python では、unicodedata モジュールは Unicode 文字列表現を単純化する .normalize() 関数を提供します。 。この関数は、分解された Unicode エンティティを最も単純な複合形式に変換します。
次の例を考えてみましょう:
import unicodedata char = "á" print(len(char)) # Output: 1 [print(unicodedata.name(c)) for c in char] # Output: ['LATIN SMALL LETTER A WITH ACUTE'] char = "á" print(len(char)) # Output: 2 [print(unicodedata.name(c)) for c in char] # Output: ['LATIN SMALL LETTER A', 'COMBINING ACUTE ACCENT']
「á」文字は 2 つのコード ポイントで構成されます: U 0061 (LATIN SMALL LETTER) A) および U 0301 (急性アクセントの組み合わせ)。分解すると、これらの文字は "á" として表示されます。
この文字列を正規化するには、.normalize('NFC') を使用できます。これは、合成された形式を返します。
print(ascii(unicodedata.normalize('NFC', '\u0061\u0301'))) # Output: '\xe1'
逆に、 .normalize('NFC') を使用します。 Normalize('NFD') は、分解された形式を返します:
print(ascii(unicodedata.normalize('NFD', '\u00E1'))) # Output: 'a\u0301'
互換性コードを処理するために追加の正規化形式が存在します。ポイント。 NFKC および NFKD は、互換性文字を正規の形式に置き換えます。たとえば、U 2160 (ローマ数字 1) は、NFKC を使用して「I」に正規化されます:
print(unicodedata.normalize('NFKC', '\u2167')) # Output: 'VIII'
一部の文字は固有の分解形式を持たない可能性があるため、正規化は常に元に戻せるわけではないことに注意することが重要です。
以上がPython の `unicodedata.normalize()` 関数は Unicode 表現をどのように簡素化するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。