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

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

This module provides access to the Unicode Character Database (UCD)
which defines character properties for all Unicode characters. The
data contained in this database is compiled from the UCD version
15.1.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' です。

   Added in version 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/15.1.0/ucd/NameAliases.txt

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