unicodedata
— Unicode 資料庫¶
此模組提供對 Unicode 字元資料庫 (UCD) 的訪問,該資料庫定義了所有 Unicode 字元的字元屬性。此資料庫中包含的資料是從 UCD 版本 16.0.0 編譯而來的。
該模組使用與 Unicode 標準附件 #44,“Unicode 字元資料庫”中定義的相同的名稱和符號。它定義了以下函式
參見
Unicode HOWTO 瞭解有關 Unicode 以及如何使用此模組的更多資訊。
- unicodedata.lookup(name)¶
按名稱查詢字元。如果找到具有給定名稱的字元,則返回相應的字元。如果未找到,則會引發
KeyError
。例如>>> unicodedata.lookup('LEFT CURLY BRACKET') '{'
此函式返回的字元與字串字面量中
\N
轉義序列產生的字元相同。例如>>> unicodedata.lookup('MIDDLE DOT') == '\N{MIDDLE DOT}' True
- 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 的通用類別。通用類別名稱由兩個字母組成。有關類別程式碼列表,請參見 Unicode 字元資料庫文件的通用類別值部分。例如
>>> unicodedata.category('A') # 'L'etter, 'u'ppercase 'Lu'
- unicodedata.bidirectional(chr)¶
以字串形式返回分配給字元 chr 的雙向類別。如果未定義此類值,則返回空字串。有關雙向程式碼列表,請參見 Unicode 字元資料庫的雙向類別值部分。例如
>>> unicodedata.bidirectional('\N{ARABIC-INDIC DIGIT SEVEN}') # 'A'rabic, 'N'umber 'AN'
- unicodedata.combining(chr)¶
以整數形式返回分配給字元 chr 的規範組合類別。如果未定義組合類別,則返回
0
。有關更多資訊,請參見 Unicode 字元資料庫的規範組合類別值部分。
- unicodedata.east_asian_width(chr)¶
以字串形式返回分配給字元 chr 的東亞寬度。有關寬度列表或更多資訊,請參見 Unicode 標準附件 #11。
- unicodedata.mirrored(chr)¶
以整數形式返回分配給字元 chr 的映象屬性。如果字元在雙向文字中被識別為“映象”字元,則返回
1
,否則返回0
。例如>>> unicodedata.mirrored('>') 1
- unicodedata.decomposition(chr)¶
以字串形式返回分配給字元 chr 的字元分解對映。如果未定義此類對映,則返回空字串。例如
>>> unicodedata.decomposition('Ã') '0041 0303'
- unicodedata.normalize(form, unistr)¶
返回 Unicode 字串 unistr 的規範形式 form。form 的有效值為 'NFC'、'NFKC'、'NFD' 和 'NFKD'。
Unicode 標準根據規範等價和相容性等價的定義,定義了 Unicode 字串的各種規範形式。在 Unicode 中,幾個字元可以用多種方式表達。例如,字元 U+00C7 (帶 CEDILLA 的拉丁大寫字母 C) 也可以表示為序列 U+0043 (拉丁大寫字母 C) U+0327 (組合 CEDILLA)。
對於每個字元,有兩種規範形式:規範形式 C 和規範形式 D。規範形式 D (NFD) 也稱為規範分解,它將每個字元轉換為其分解形式。規範形式 C (NFC) 首先應用規範分解,然後再次組合預組合字元。
除了這兩種形式之外,還有兩種基於相容性等價的附加規範形式。在 Unicode 中,支援某些通常會與其他字元統一的字元。例如,U+2160 (羅馬數字一) 實際上與 U+0049 (拉丁大寫字母 I) 相同。但是,為了與現有字元集 (例如 gb2312) 相容,Unicode 中支援它。
規範形式 KD (NFKD) 將應用相容性分解,即將所有相容性字元替換為其等效字元。規範形式 KC (NFKC) 首先應用相容性分解,然後進行規範組合。
即使兩個 unicode 字串經過規範化並且人類讀者看起來相同,如果一個包含組合字元而另一個不包含,它們也可能無法比較相等。
- unicodedata.is_normalized(form, unistr)¶
返回 Unicode 字串 unistr 是否處於規範形式 form。form 的有效值為 'NFC'、'NFKC'、'NFD' 和 'NFKD'。
在 3.8 版本加入。
此外,該模組還公開了以下常量
- unicodedata.unidata_version¶
此模組中使用的 Unicode 資料庫的版本。
- unicodedata.ucd_3_2_0¶
這是一個與整個模組具有相同方法的物件,但使用 Unicode 資料庫版本 3.2,適用於需要此特定版本 Unicode 資料庫的應用程式(例如 IDNA)。
腳註