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

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

7.9。 unicodedata —Unicodeデータベース

このモジュールは、すべてのUnicode文字の文字プロパティを定義するUnicode文字データベースへのアクセスを提供します。 このデータベースのデータは、 ftp://ftp.unicode.org/から公開されているUnicodeData.txtファイルバージョン5.2.0に基づいています。

このモジュールは、UnicodeData File Format 5.2.0で定義されているものと同じ名前と記号を使用します( https://www.unicode.org/reports/tr44/ を参照)。 次の関数を定義します。

unicodedata.lookup(name)
名前で文字を検索します。 指定された名前の文字が見つかった場合は、対応するUnicode文字を返します。 見つからない場合は、KeyErrorが発生します。
unicodedata.name(unichr[, default])
Unicode文字 unichr に割り当てられた名前を文字列として返します。 名前が定義されていない場合は、 default が返されます。指定されていない場合は、ValueErrorが発生します。
unicodedata.decimal(unichr[, default])
Unicode文字 unichr に割り当てられた10進値を整数として返します。 そのような値が定義されていない場合は、 default が返されます。指定されていない場合は、ValueErrorが発生します。
unicodedata.digit(unichr[, default])
Unicode文字 unichr に割り当てられた桁の値を整数として返します。 そのような値が定義されていない場合は、 default が返されます。指定されていない場合は、ValueErrorが発生します。
unicodedata.numeric(unichr[, default])
Unicode文字 unichr に割り当てられた数値をfloatとして返します。 そのような値が定義されていない場合は、 default が返されます。指定されていない場合は、ValueErrorが発生します。
unicodedata.category(unichr)
Unicode文字 unichr に割り当てられた一般的なカテゴリを文字列として返します。
unicodedata.bidirectional(unichr)
Unicode文字 unichr に割り当てられた双方向クラスを文字列として返します。 そのような値が定義されていない場合は、空の文字列が返されます。
unicodedata.combining(unichr)
Unicode文字 unichr に割り当てられた正規の結合クラスを整数として返します。 結合クラスが定義されていない場合は、0を返します。
unicodedata.east_asian_width(unichr)

Unicode文字 unichr に割り当てられた東アジアの幅を文字列として返します。

バージョン2.4の新機能。

unicodedata.mirrored(unichr)
Unicode文字 unichr に割り当てられたミラーリングされたプロパティを整数として返します。 文字が双方向テキストで「ミラーリングされた」文字として識別された場合は1を返し、それ以外の場合は0を返します。
unicodedata.decomposition(unichr)
Unicode文字 unichr に割り当てられた文字分解マッピングを文字列として返します。 そのようなマッピングが定義されていない場合は、空の文字列が返されます。
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文字列が正規化され、人間の読者には同じように見える場合でも、一方に結合文字があり、もう一方に結合文字がない場合、それらは等しく比較されない可能性があります。

バージョン2.3の新機能。

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

unicodedata.unidata_version

このモジュールで使用されるUnicodeデータベースのバージョン。

バージョン2.3の新機能。

unicodedata.ucd_3_2_0

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

バージョン2.5の新機能。

例:

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