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 14.0.0.
該模塊使用與 Unicode 標準附件 #44 “Unicode 字符數據庫” 中所定義的相同名稱(chēng)和符號。 它定義了以下函數:
- unicodedata.lookup(name)?
按名稱(chēng)查找字符。如果找到具有給定名稱(chēng)的字符,則返回相應的字符。 如果沒(méi)有找到,則
KeyError
被引發(fā)。
- unicodedata.name(chr[, default])?
返回分配給字符 chr 的名稱(chēng)作為字符串。如果沒(méi)有定義名稱(chēng),則返回 default ,如果沒(méi)有給出,則
ValueError
被引發(fā)。
- unicodedata.decimal(chr[, default])?
返回分配給字符 chr 的十進(jìn)制值作為整數。 如果沒(méi)有定義這樣的值,則返回 default ,如果沒(méi)有給出,則
ValueError
被引發(fā)。
- unicodedata.digit(chr[, default])?
返回分配給字符 chr 的數字值作為整數。 如果沒(méi)有定義這樣的值,則返回 default ,如果沒(méi)有給出,則
ValueError
被引發(fā)。
- unicodedata.numeric(chr[, default])?
返回分配給字符 chr 的數值作為浮點(diǎn)數。 如果沒(méi)有定義這樣的值,則返回 default ,如果沒(méi)有給出,則
ValueError
被引發(fā)。
- unicodedata.category(chr)?
返回分配給字符 chr 的常規類(lèi)別為字符串。
- unicodedata.bidirectional(chr)?
返回分配給字符 chr 的雙向類(lèi)作為字符串。如果未定義此類(lèi)值,則返回空字符串。
- unicodedata.combining(chr)?
返回分配給字符 chr 的規范組合類(lèi)作為整數。如果沒(méi)有定義組合類(lèi),則返回
0
。
- unicodedata.east_asian_width(chr)?
返回分配給字符 chr 的東亞寬度作為字符串。
- unicodedata.mirrored(chr)?
返回分配給字符 chr 的鏡像屬性為整數。如果字符在雙向文本中被識別為“鏡像”字符,則返回
1
,否則返回0
。
- unicodedata.decomposition(chr)?
返回分配給字符 chr 的字符分解映射作為字符串。如果未定義此類(lèi)映射,則返回空字符串。
- unicodedata.normalize(form, unistr)?
返回 Unicode 字符串 unistr 的正常形式 form 。 form 的有效值為 'NFC' 、 'NFKC' 、 'NFD' 和 'NFKD' 。
Unicode 標準基于規范等價(jià)和兼容性等效的定義定義了 Unicode 字符串的各種規范化形式。在 Unicode 中,可以以各種方式表示多個(gè)字符。 例如,字符 U+00C7 (帶有 CEDILLA 的 LATIN CAPITAL LETTER C )也可以表示為序列 U+0043( LATIN CAPITAL LETTER C )U+0327( COMBINING CEDILLA )。
對于每個(gè)字符,有兩種正規形式:正規形式 C 和正規形式 D 。正規形式D(NFD)也稱(chēng)為規范分解,并將每個(gè)字符轉換為其分解形式。 正規形式C(NFC)首先應用規范分解,然后再次組合預組合字符。
除了這兩種形式之外,還有兩種基于兼容性等效的其他常規形式。 在 Unicode 中,支持某些字符,這些字符通常與其他字符統一。 例如, U+2160(ROMAN NUMERAL ONE)與 U+0049(LATIN CAPITAL LETTER I)完全相同。 但是, Unicode 支持它與現有字符集(例如 gb2312 )的兼容性。
正規形式KD(NFKD)將應用兼容性分解,即用其等價(jià)項替換所有兼容性字符。 正規形式KC(NFKC)首先應用兼容性分解,然后是規范組合。
即使兩個(gè) unicode 字符串被規范化并且人類(lèi)讀者看起來(lái)相同,如果一個(gè)具有組合字符而另一個(gè)沒(méi)有,則它們可能無(wú)法相等。
- unicodedata.is_normalized(form, unistr)?
判斷 Unicode 字符串 unistr 是否為正規形式 form。 form 的有效值為 'NFC', 'NFKC', 'NFD' 和 'NFKD'。
3.8 新版功能.
此外,該模塊暴露了以下常量:
- unicodedata.unidata_version?
此模塊中使用的 Unicode 數據庫的版本。
- unicodedata.ucd_3_2_0?
這是一個(gè)與整個(gè)模塊具有相同方法的對象,但對于需要此特定版本的 Unicode 數據庫(如 IDNA )的應用程序,則使用 Unicode 數據庫版本 3.2 。
示例:
>>> 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'
備注