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

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

このモジュールは、すべての Unicode 文字のプロパティを定義する Unicode
文字データベース (UCD) へのアクセスを提供します。 このデータベースのデ
ータは UCD バージョン 17.0.0 に基づいています。

このモジュールは、Unicode 標準附属書 #44 "Unicode Character Database"
で定義されたものと同じ名前と記号を使います。

参考: Unicode とこのモジュールの使い方については Unicode HOWTO を参照して
    ください。

+--------------------------------------------------------------+-------------------------------------------------------------+
| **検索**                                                                                                                   |
+--------------------------------------------------------------+-------------------------------------------------------------+
| "lookup(name)"                                               | 名前で文字を検索する                                        |
+--------------------------------------------------------------+-------------------------------------------------------------+
| "name(chr)"                                                  | 文字に割り当てられた名前を返す                              |
+--------------------------------------------------------------+-------------------------------------------------------------+
| **数値**                                                                                                                   |
+--------------------------------------------------------------+-------------------------------------------------------------+
| "decimal(chr)"                                               | 文字の十進数字としての値                                    |
+--------------------------------------------------------------+-------------------------------------------------------------+
| "digit(chr)"                                                 | 文字の数字としての値                                        |
+--------------------------------------------------------------+-------------------------------------------------------------+
| "numeric(chr)"                                               | 文字の数値                                                  |
+--------------------------------------------------------------+-------------------------------------------------------------+
| **プロパティ**                                                                                                             |
+--------------------------------------------------------------+-------------------------------------------------------------+
| "bidirectional(chr)"                                         | 文字の双方向クラス                                          |
+--------------------------------------------------------------+-------------------------------------------------------------+
| "block(chr)"                                                 | 文字の Unicode ブロック                                     |
+--------------------------------------------------------------+-------------------------------------------------------------+
| "category(chr)"                                              | 文字の一般カテゴリ                                          |
+--------------------------------------------------------------+-------------------------------------------------------------+
| "combining(chr)"                                             | 文字の標準結合クラス                                        |
+--------------------------------------------------------------+-------------------------------------------------------------+
| "decomposition(chr)"                                         | 文字の分解マッピング                                        |
+--------------------------------------------------------------+-------------------------------------------------------------+
| "east_asian_width(chr)"                                      | 文字の東アジアにおける幅                                    |
+--------------------------------------------------------------+-------------------------------------------------------------+
| "extended_pictographic(chr)"                                 | 文字が Extended_Pictographic プロパティを持つか調べる       |
+--------------------------------------------------------------+-------------------------------------------------------------+
| "grapheme_cluster_break(chr)"                                | 文字の Grapheme_Cluster_Break プロパティ                    |
+--------------------------------------------------------------+-------------------------------------------------------------+
| "indic_conjunct_break(chr)"                                  | 文字の Indic_Conjunct_Break プロパティ                      |
+--------------------------------------------------------------+-------------------------------------------------------------+
| "isxidcontinue(chr)"                                         | 文字が識別子の先頭以外で使用可能か調べる                    |
+--------------------------------------------------------------+-------------------------------------------------------------+
| "isxidstart(chr)"                                            | 文字が識別子の先頭で使用可能か調べる                        |
+--------------------------------------------------------------+-------------------------------------------------------------+
| "mirrored(chr)"                                              | 文字の鏡像プロパティ                                        |
+--------------------------------------------------------------+-------------------------------------------------------------+
| **正規化**                                                                                                                 |
+--------------------------------------------------------------+-------------------------------------------------------------+
| "normalize(form, unistr)"                                    | 文字列の正規形を返す                                        |
+--------------------------------------------------------------+-------------------------------------------------------------+
| "is_normalized(form, unistr)"                                | Unicode 文字列が正規化されているか調べる                    |
+--------------------------------------------------------------+-------------------------------------------------------------+
| **テキストの分割**                                                                                                         |
+--------------------------------------------------------------+-------------------------------------------------------------+
| "iter_graphemes(unistr)"                                     | 文字列内の書記素クラスタを反復する                          |
+--------------------------------------------------------------+-------------------------------------------------------------+

unicodedata.lookup(name, /)

   名前で文字を検索します。 指定された名前の文字が見つかれば、その文字
   を返します。 見つからなければ "KeyError" を送出します。 例えば次の
   ようになります。

      >>> unicodedata.lookup('LEFT CURLY BRACKET')
      '{'

   この関数が返す文字は、文字列リテラルの "\N" エスケープシーケンスが
   生成する文字と同じです。 例えば次のようになります。

      >>> unicodedata.lookup('MIDDLE DOT') == '\N{MIDDLE DOT}'
      True

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

unicodedata.name(chr, default=None, /)

   文字 *chr* に割り当てられた名前を文字列で返します。 名前が定義され
   ていなければ *default* を返し、*default* を指定していなければ
   "ValueError" を送出します。 例えば次のようになります。

      >>> unicodedata.name('½')
      'VULGAR FRACTION ONE HALF'
      >>> unicodedata.name('\uFFFF', 'fallback')
      'fallback'

unicodedata.decimal(chr, default=None, /)

   文字 *chr* に割り当てられた十進数字の値を整数で返します。 値が定義
   されていなければ *default* を返し、*default* を指定していなければ
   "ValueError" を送出します。 例えば次のようになります。

      >>> unicodedata.decimal('\N{ARABIC-INDIC DIGIT NINE}')
      9
      >>> unicodedata.decimal('\N{SUPERSCRIPT NINE}', -1)
      -1

unicodedata.digit(chr, default=None, /)

   文字 *chr* に割り当てられた数字の値を整数で返します。 値が定義され
   ていなければ *default* を返し、*default* を指定していなければ
   "ValueError" を送出します。

      >>> unicodedata.digit('\N{SUPERSCRIPT NINE}')
      9

unicodedata.numeric(chr, default=None, /)

   文字 *chr* に割り当てられた数値を浮動小数点数で返します。 値が定義
   されていなければ *default* を返し、*default* を指定していなければ
   "ValueError" を送出します。

      >>> unicodedata.numeric('½')
      0.5

unicodedata.category(chr, /)

   文字 *chr* に割り当てられた一般カテゴリを文字列で返します。 一般カ
   テゴリの名前は 2 文字からなります。 カテゴリコードの一覧は、Unicode
   文字データベースのドキュメントの General Category Values 節 を参照
   してください。 例えば次のようになります。

      >>> unicodedata.category('A')  # 'L'etter (文字)、'u'ppercase (大文字)
      'Lu'

unicodedata.bidirectional(chr, /)

   文字 *chr* に割り当てられた双方向クラスを文字列で返します。 値が定
   義されていなければ空文字列を返します。 双方向コードの一覧は、
   Unicode 文字データベースのドキュメントの Bidirectional Class Values
   節 を参照してください。 例えば次のようになります。

      >>> unicodedata.bidirectional('\N{ARABIC-INDIC DIGIT SEVEN}') # 'A'rabic (アラビア)、'N'umber (数字)
      'AN'

unicodedata.combining(chr, /)

   文字 *chr* に割り当てられた標準結合クラスを整数で返します。 結合ク
   ラスが定義されていなければ "0" を返します。 詳しくは Unicode 文字デ
   ータベースの Canonical Combining Class Values 節 を参照してください
   。

unicodedata.east_asian_width(chr, /)

   文字 *chr* に割り当てられた東アジアにおける幅を文字列で返します。
   幅の一覧と詳細は、Unicode 標準附属書 #11 を参照してください。

unicodedata.block(chr, /)

   文字 *chr* に割り当てられた ブロック を返します。 例えば次のように
   なります。

      >>> unicodedata.block('S')
      'Basic Latin'

   Added in version 3.15.

unicodedata.mirrored(chr, /)

   文字 *chr* に割り当てられた鏡像プロパティを整数で返します。 双方向
   テキストで「鏡像」になる文字とされていれば "1"、それ以外は "0" を返
   します。 例えば次のようになります。

      >>> unicodedata.mirrored('>')
      1

unicodedata.isxidstart(chr, /)

   *chr* が Unicode 標準附属書 #31 に従って識別子の先頭で使用可能な文
   字、つまり "XID_Start" プロパティを持つ文字であれば "True" を返しま
   す。 それ以外は "False" を返します。 例えば次のようになります。

      >>> unicodedata.isxidstart('S')
      True
      >>> unicodedata.isxidstart('0')
      False

   Added in version 3.15.

unicodedata.isxidcontinue(chr, /)

   *chr* が Unicode 標準附属書 #31 に従って識別子に使用可能な文字、つ
   まり "XID_Continue" プロパティを持つ文字であれば "True" を返します
   。 それ以外は "False" を返します。 例えば次のようになります。

      >>> unicodedata.isxidcontinue('S')
      True
      >>> unicodedata.isxidcontinue(' ')
      False

   Added in version 3.15.

unicodedata.decomposition(chr, /)

   文字 *chr* に割り当てられた文字分解マッピングを文字列で返します。
   そのようなマッピングが定義されていなければ空文字列を返します。 例え
   ば次のようになります。

      >>> unicodedata.decomposition('Ã')
      '0041 0303'

unicodedata.grapheme_cluster_break(chr, /)

   文字に割り当てられた Grapheme_Cluster_Break プロパティを返します。

   Added in version 3.15.

unicodedata.indic_conjunct_break(chr, /)

   文字に割り当てられた Indic_Conjunct_Break プロパティを返します。

   Added in version 3.15.

unicodedata.extended_pictographic(chr, /)

   文字が Extended_Pictographic プロパティを持つ場合は "True"、それ以
   外は "False" を返します。

   Added in version 3.15.

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 つの形式に加え、互換等価性に基づく正規形が 2 つあります。
   Unicode は、本来なら他の文字に統一されるような文字もサポートしてい
   ます。 例えば U+2160 (ROMAN NUMERAL ONE) は、実質的には U+0049
   (LATIN CAPITAL LETTER I) と同じものです。 ただし、既存の文字集合 (
   例えば gb2312) との互換性のために、Unicode でもサポートされています
   。

   正規形 KD (NFKD) は互換分解を適用し、すべての互換文字を等価な文字に
   置き換えます。 正規形 KC (NFKC) は、互換分解を適用してから標準合成
   を適用します。

   2 つの Unicode 文字列が正規化されていて、人間の目には同じに見えても
   、一方に結合文字があり他方にはない場合は、比較して等しいと判定され
   ないことがあります。

unicodedata.is_normalized(form, unistr, /)

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

   Added in version 3.8.

unicodedata.iter_graphemes(unistr, start=0, end=sys.maxsize, /)

   書記素クラスタを反復するイテレータを返します。 省略可能な *start*
   を指定すると、その位置から反復を始めます。 省略可能な *end* を指定
   すると、その位置で反復を停止します。

   生成された要素を文字列に変換すると、書記素クラスタに対応する部分文
   字列が得られます。 その "start" 属性と "end" 属性は、書記素クラスタ
   の開始位置と終了位置を表します。

   Unicode 標準附属書 #29 "Unicode Text Segmentation" で定義された、拡
   張書記素クラスタの規則を使います。

   Added in version 3.15.

また、このモジュールは次の定数を公開しています。

unicodedata.unidata_version

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

unicodedata.ucd_3_2_0

   このモジュールのほとんどのメソッドを持つオブジェクトですが、Unicode
   データベースのバージョン 3.2 を使います。 IDNA など、この特定のバー
   ジョンの Unicode データベースを必要とする用途のために用意されていま
   す。

-[ 脚注 ]-

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

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