7.9. unicodedata — Unicodeデータベース—Pythonドキュメント
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'