7.9. unicodedata — Unicode 数据库

此模块提供对 Unicode 字符数据库的访问,该数据库定义了所有 Unicode 字符的字符属性。此数据库中的数据基于UnicodeData.txt文件版本 5.2.0(可从ftp://ftp.unicode.org/公开获得)。

该模块使用与 UnicodeData File Format 5.2.0(请参见https://www.unicode.org/reports/tr44/)定义的相同的名称和符号。它定义了以下Function:

2.4 版的新Function。

Unicode 标准基于规范对等和兼容性对等的定义,定义了 Unicode 字符串的各种规范化形式。在 Unicode 中,可以用各种方式表示几个字符。例如,字符 U 00C7(带有 CEDILLA 的拉丁文大写字母 C)也可以表示为序列 U 0043(拉丁文的大写字母 C)U 0327(合并 CEDILLA)。

对于每个字符,有两种规范形式:规范形式 C 和规范形式 D。规范形式 D(NFD)也称为规范分解,将每个字符转换为其分解形式。正常形式 C(NFC)首先应用规范分解,然后再次组成预组合字符。

除了这两种形式,还有基于兼容性对等的两种其他常规形式。在 Unicode 中,支持某些字符,这些字符通常会与其他字符统一。例如,U 2160(罗马数字 ONE)与 U 0049(拉丁文大写字母 I)实际上是同一回事。但是,Unicode 支持它以与现有字符集(例如 gb2312)兼容。

普通格式 KD(NFKD)将应用兼容性分解,即用所有等效字符替换它们的等效字符。范式 KC(NFKC)首先应用兼容性分解,然后进行规范组合。

即使将两个 unicode 字符串归一化并在人类 Reader 看来是相同的,但如果一个字符串包含组合字符而另一个字符串没有组合,则它们可能不相等。

2.3 版的新Function。

此外,该模块还公开以下常量:

2.3 版的新Function。

2.5 版的新Function。

Examples:

>>> import unicodedata
>>> unicodedata.lookup('LEFT CURLY BRACKET')
u'{'
>>> unicodedata.name(u'/')
'SOLIDUS'
>>> unicodedata.decimal(u'9')
9
>>> unicodedata.decimal(u'a')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: not a decimal
>>> unicodedata.category(u'A')  # 'L'etter, 'u'ppercase
'Lu'
>>> unicodedata.bidirectional(u'\u0660') # 'A'rabic, 'N'umber
'AN'
首页