"unicodedata" --- Unicode データベース
**************************************

======================================================================

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

このモジュールは、ユニコード標準付録 #44 「 ユニコード文字データベース
」で定義されているのと同じ名前およびシンボルを使用します。このモジュー
ルは次のような関数を定義します:

unicodedata.lookup(name)

   名前に対応する文字を探します。その名前の文字が見つかった場合、その
   文字が返されます。見つからなかった場合には、 "KeyError" を発生させ
   ます。

   バージョン 3.3 で変更: name aliases [1] と named sequences [2] のサ
   ポートが追加されました。

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.is_normalized(form, unistr)

   Unicode 文字列 *unistr* が正規形 *form* かどうかを返します。 *form*
   の有効な値は、'NFC'、'NFKC'、'NFD'、'NFKD' です。

   バージョン 3.8 で追加.

更に、本モジュールは以下の定数を公開します:

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 <module>
ValueError: not a decimal
>>> unicodedata.category('A')  # 'L'etter, 'u'ppercase
'Lu'
>>> unicodedata.bidirectional('\u0660') # 'A'rabic, 'N'umber
'AN'

-[ 脚注 ]-

[1] https://www.unicode.org/Public/13.0.0/ucd/NameAliases.txt

[2] https://www.unicode.org/Public/13.0.0/ucd/NamedSequences.txt
