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 データベースを必要とする用途のために用意されています。

脚注