6.5. unicodedata
— Unicode データベース¶
このモジュールは、すべてのユニコード文字の文字プロパティを定義するユニコード文字データベース(UCD) へのアクセスを提供します。このデータベースに含まれているデータは、 UCD バージョン 8.0.0 から収集されています。
このモジュールは、ユニコード標準付録 #44 「 ユニコード文字データベース 」で定義されているのと同じ名前およびシンボルを使用します。このモジュールは次のような関数を定義します:
-
unicodedata.
name
(chr[, default])¶ 文字 chr に付いている名前を、文字列で返します。名前が定義されていない場合には default が返されますが、この引数が与えられていなければ
ValueError
を発生させます。
-
unicodedata.
decimal
(chr[, default])¶ 文字 chr に割り当てられている十進数を、整数で返します。この値が定義されていない場合には 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 に割り当てられたeast asian widthを文字列で返します。
-
unicodedata.
mirrored
(chr)¶ 文字 chr に割り当てられた、鏡像化のプロパティを返します。その文字が双方向テキスト内で鏡像化された文字である場合には
1
を、それ以外の場合には0
を返します。
-
unicodedata.
decomposition
(chr)¶ 文字 chr に割り当てられた、文字分解マッピングを、文字列型で返します。そのようなマッピングが定義されていない場合、空の文字列が返されます。
-
unicodedata.
normalize
(form, unistr)¶ Unicode 文字列 unistr の正規形 form を返します。form の有効な値は、’NFC’、’NFKC’、’NFD’、’NFKD’ です。
Unicode 規格は標準等価性 (canonical equivalence) と互換等価性 (compatibility equivalence) に基づいて、様々な Unicode文字列の正規形を定義します。Unicode では、複数の方法で表現できる文字があります。たとえば、文字 U+00C7 (LATIN CAPITAL LETTER C WITH CEDILLA) は、U+0043 (LATIN CAPITAL LETTER C) U+0327 (COMBINING CEDILLA) というシーケンスとしても表現できます。
各文字には2つの正規形があり、それぞれ正規形 C と正規形 D といいます。正規形 D (NFD) は標準分解 (canonical decomposition) としても知られており、各文字を分解された形に変換します。正規形 C (NFC) は標準分解を適用した後、結合済文字を再構成します。
互換等価性に基づいて、2つの正規形が加えられています。Unicode では、一般に他の文字との統合がサポートされている文字があります。たとえば、U+2160 (ROMAN NUMERAL ONE) は事実上 U+0049 (LATIN CAPITAL LETTER I) と同じものです。しかし、Unicode では、既存の文字集合 (たとえば gb2312) との互換性のために、これがサポートされています。
正規形 KD (NFKD) は、互換分解 (compatibility decomposition) を適用します。すなわち、すべての互換文字を、等価な文字で置換します。正規形 KC (NFKC) は、互換分解を適用してから、標準分解を適用します。
2つのunicode文字列が正規化されていて人間の目に同じに見えても、片方が結合文字を持っていてもう片方が持っていない場合、それらは完全に同じではありません。
更に、本モジュールは以下の定数を公開します:
-
unicodedata.
unidata_version
¶ このモジュールで使われている Unicode データベースのバージョン。
-
unicodedata.
ucd_3_2_0
¶ これはモジュール全体と同じメソッドを具えたオブジェクトですが、Unicode データベースバージョン 3.2 を代わりに使っており、この特定のバージョンの Unicode データベースを必要とするアプリケーション(IDNA など)のためものです。
例:
>>> 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 ?
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/8.0.0/ucd/NameAliases.txt |
[2] | http://www.unicode.org/Public/8.0.0/ucd/NamedSequences.txt |