ホームページ > バックエンド開発 > Python チュートリアル > Python の `unicodedata.normalize()` 関数は Unicode 表現をどのように簡素化するのでしょうか?

Python の `unicodedata.normalize()` 関数は Unicode 表現をどのように簡素化するのでしょうか?

DDD
リリース: 2024-11-22 16:12:15
オリジナル
252 人が閲覧しました

How Does Python's `unicodedata.normalize()` Function Simplify Unicode Representations?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート