unicodedata — Unicodeデータベース—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/3.8/library/unicodedata
移動先:案内検索

unicodedata —Unicodeデータベース


このモジュールは、すべてのUnicode文字の文字プロパティを定義するUnicode文字データベース(UCD)へのアクセスを提供します。 このデータベースに含まれるデータは、 UCDバージョン12.1.0 からコンパイルされています。

このモジュールは、Unicode Standard Annex#44、「UnicodeCharacterDatabase」で定義されているものと同じ名前と記号を使用します。 次の関数を定義します。

unicodedata.lookup(name)

名前で文字を検索します。 指定された名前の文字が見つかった場合は、対応する文字を返します。 見つからない場合は、 KeyError が発生します。

バージョン3.3で変更:名前エイリアス 1 および名前付きシーケンス 2 のサポートが追加されました。

unicodedata.name(chr[, default])
文字 chr に割り当てられた名前を文字列として返します。 名前が定義されていない場合は、 default が返されます。指定されていない場合は、 ValueError が発生します。
unicodedata.decimal(chr[, default])
文字 chr に割り当てられた10進値を整数として返します。 そのような値が定義されていない場合は、 default が返されます。指定されていない場合は、 ValueError が発生します。
unicodedata.digit(chr[, default])
文字 chr に割り当てられた桁の値を整数として返します。 そのような値が定義されていない場合は、 default が返されます。指定されていない場合は、 ValueError が発生します。
unicodedata.numeric(chr[, default])
文字 chr に割り当てられた数値をfloatとして返します。 そのような値が定義されていない場合は、 default が返されます。指定されていない場合は、 ValueError が発生します。
unicodedata.category(chr)
文字 chr に割り当てられている一般的なカテゴリを文字列として返します。
unicodedata.bidirectional(chr)
文字 chr に割り当てられた双方向クラスを文字列として返します。 そのような値が定義されていない場合は、空の文字列が返されます。
unicodedata.combining(chr)
文字 chr に割り当てられた正規の結合クラスを整数として返します。 結合クラスが定義されていない場合は、0を返します。
unicodedata.east_asian_width(chr)
文字 chr に割り当てられた東アジアの幅を文字列として返します。
unicodedata.mirrored(chr)
文字 chr に割り当てられたミラーリングされたプロパティを整数として返します。 文字が双方向テキストで「ミラーリングされた」文字として識別された場合は1を返し、それ以外の場合は0を返します。
unicodedata.decomposition(chr)
文字 chr に割り当てられた文字分解マッピングを文字列として返します。 そのようなマッピングが定義されていない場合は、空の文字列が返されます。
unicodedata.normalize(form, unistr)

Unicode文字列 unistr の正規形 form を返します。 form の有効な値は、「NFC」、「NFKC」、「NFD」、および「NFKD」です。

Unicode標準は、正規の同等性と互換性の同等性の定義に基づいて、Unicode文字列のさまざまな正規化形式を定義します。 Unicodeでは、いくつかの文字をさまざまな方法で表現できます。 たとえば、文字U + 00C7(LATIN CAPITAL LETTER C WITH CEDILLA)は、シーケンスU + 0043(LATIN CAPITAL LETTER C)U + 0327(COMBINING CEDILLA)として表すこともできます。

各文字には、正規形Cと正規形Dの2つの正規形があります。 通常の形式D(NFD)は標準分解とも呼ばれ、各文字を分解された形式に変換します。 正規形C(NFC)は、最初に正規分解を適用し、次に事前に結合された文字を再度構成します。

これらの2つの形式に加えて、互換性の同等性に基づく2つの追加の正規形式があります。 Unicodeでは、通常は他の文字と統合される特定の文字がサポートされています。 たとえば、U + 2160(ROMAN NUMERAL ONE)は、実際にはU + 0049(LATIN CAPITAL LETTER I)と同じものです。 ただし、既存の文字セットとの互換性のためにUnicodeでサポートされています(例: gb2312)。

正規形KD(NFKD)は、互換性分解を適用します。 すべての互換文字を同等のものに置き換えます。 正規形KC(NFKC)は、最初に互換性分解を適用し、次に標準形の構成を適用します。

2つのUnicode文字列が正規化され、人間の読者には同じように見える場合でも、一方に結合文字があり、もう一方に結合文字がない場合、それらは等しく比較されない可能性があります。

unicodedata.is_normalized(form, unistr)

Unicode文字列 unistr が正規形形式であるかどうかを返します。 form の有効な値は、「NFC」、「NFKC」、「NFD」、および「NFKD」です。

バージョン3.8の新機能。

さらに、モジュールは次の定数を公開します。

unicodedata.unidata_version
このモジュールで使用されるUnicodeデータベースのバージョン。
unicodedata.ucd_3_2_0
これは、モジュール全体と同じメソッドを持つオブジェクトですが、この特定のバージョンのUnicodeデータベース(IDNAなど)を必要とするアプリケーションでは、代わりにUnicodeデータベースバージョン3.2を使用します。

例:

>>> import unicodedata
>>> unicodedata.lookup('LEFT CURLY BRACKET')
'{'
>>> unicodedata.name('/')
'SOLIDUS'
>>> unicodedata.decimal('9')
9
>>> unicodedata.decimal('a')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: not a decimal
>>> unicodedata.category('A')  # 'L'etter, 'u'ppercase
'Lu'
>>> unicodedata.bidirectional('\u0660') # 'A'rabic, 'N'umber
'AN'

脚注

1
http://www.unicode.org/Public/12.1.0/ucd/NameAliases.txt
2
http://www.unicode.org/Public/12.1.0/ucd/NamedSequences.txt