
今回はUnicodeデータベースの操作について。
■ Unicodeの文字とその文字を表す名前の確認
Unicodeの各文字には、その文字を表す名前が定義されているようです。
それは以下の関数で確認可能のようです。
- lookup(name) : 指定された名前に対する文字を返す
- name(char) : 文字charに対応する名前を返す
>>> import unicodedata
>>>
>>> unicodedata.name('A')
'LATIN CAPITAL LETTER A'
>>> unicodedata.name('B')
'LATIN CAPITAL LETTER B'
>>> unicodedata.name('a')
'LATIN SMALL LETTER A'
>>> unicodedata.name('b')
'LATIN SMALL LETTER B'
大文字の「A」は「LATIN CAPITAL LETTER A」。
小文字の「a」は「LATIN SMALL LETTER A」
というようです。
>>> import unicodedata
>>> unicodedata.name('2')
'DIGIT TWO'
>>> unicodedata.name('23')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: name() argument 1 must be a unicode character, not str
数字は「DIGIT TWO」とかのように表されるようです。
ただ、当然二桁は2文字になるので、エラーになります。
漢字について同様に試してみると…
「CJK UNIFIED IDEOGRAPH-vwxy」のような形式のようです。
>>> import unicodedata
>>> unicodedata.name('開')
'CJK UNIFIED IDEOGRAPH-958B'
>>> unicodedata.name('閉')
'CJK UNIFIED IDEOGRAPH-9589'
>>>
>>> unicodedata.lookup('CJK UNIFIED IDEOGRAPH-958A')
'閊'
「開」で試してみると、「CJK UNIFIED IDEOGRAPH-958B」
「閉」で試してみると、「CJK UNIFIED IDEOGRAPH-9589」
と出ました。
ということは、その間の「958A」は?と思ったので、lookupで確認してみると…
知らない漢字が出てきましたね。Unicodeは別に簡単な漢字や関係のある漢字の順に並んでいるわけではないですからね。