unicodedata- Unicode数据库详解(14)Python语言(必读进阶学习教程)(参考资料)
此模块提供对Unicode字符数据库(UCD)的访问,该数据库定义所有Unicode字符的字符属性。此数据库中包含的数据是从UCD版本11.0.0编译的。
该模块使用与Unicode标准附录#44 “Unicode字符数据库”定义的相同名称和符号。它定义了以下功能:
unicodedata.
lookup
(名字)- 按名称查找字符。如果找到具有给定名称的字符,则返回相应的字符。如果没有找到,
KeyError
则被提出。版本3.3中已更改:已添加对名称别名[1]和命名序列[2]的支持。
unicodedata.
name
(chr [,默认] )- 返回分配给字符chr的名称作为字符串。如果未定义名称,则返回default,否则,如果未给出,
ValueError
则引发。
unicodedata.
decimal
(chr [,默认] )- 将分配给字符chr的十进制值作为整数返回。如果未定义此类值,则返回default,否则,如果未给出,
ValueError
则引发此值。
unicodedata.
digit
(chr [,默认] )- 将分配给字符chr的数字值作为整数返回。如果未定义此类值,则返回default,否则,如果未给出,
ValueError
则引发此值。
unicodedata.
numeric
(chr [,默认] )- 返回分配给字符chr的数值为float。如果未定义此类值,则返回default,否则,如果未给出,
ValueError
则引发此值。
unicodedata.
category
(chr )- 返回分配给字符chr的常规类别作为字符串。
unicodedata.
bidirectional
(chr )- 返回分配给字符chr的双向类作为字符串。如果未定义此类值,则返回空字符串。
unicodedata.
combining
(chr )- 返回分配给字符chr的规范组合类 作为整数。
0
如果未定义组合类,则返回。
unicodedata.
east_asian_width
(chr )- 返回分配给字符chr的东亚宽度为字符串。
unicodedata.
mirrored
(chr )- 将分配给字符chr的镜像属性作为整数返回。返回
1
是否在双向文本中将字符标识为“镜像”字符,0
否则返回。
unicodedata.
decomposition
(chr )- 返回分配给字符chr的字符分解映射 作为字符串。如果未定义此类映射,则返回空字符串。
unicodedata.
normalize
(form,unistr )- 返回Unicode字符串unistr的正常表单形式。表单的有效值为 “NFC”,“NFKC”,“NFD”和“NFKD”。
Unicode标准基于规范等价和兼容性等效的定义定义了Unicode字符串的各种规范化形式。在Unicode中,可以以各种方式表示多个字符。例如,字符U + 00C7(带有CEDILLA的LATIN CAPITAL LETTER C)也可以表示为序列U + 0043(LATIN CAPITAL LETTER C)U + 0327(COMBINING CEDILLA)。
对于每个字符,有两种正常形式:正常形式C和正常形式D.正规形式D(NFD)也称为规范分解,并将每个字符转换为其分解形式。普通形式C(NFC)首先应用规范分解,然后再次组合预组合字符。
除了这两种形式之外,还有两种基于兼容性等效的其他常规形式。在Unicode中,支持某些字符,这些字符通常与其他字符统一。例如,U + 2160(ROMAN NUMERAL ONE)与U + 0049(LATIN CAPITAL LETTER I)完全相同。但是,它支持Unicode以与现有字符集(例如gb2312)兼容。
普通形式KD(NFKD)将应用兼容性分解,即将所有兼容性字符替换为其等效字符。正常形式KC(NFKC)首先应用兼容性分解,然后是规范组合物。
即使两个unicode字符串被规范化并且看起来与人类读者相同,如果一个具有组合字符而另一个没有,则它们可能无法相等。
此外,该模块公开以下常量:
unicodedata.
unidata_version
- 此模块中使用的Unicode数据库的版本。
unicodedata.
ucd_3_2_0
- 这是一个与整个模块具有相同方法的对象,但对于需要此特定版本的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'
本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如果侵犯你的利益,请发送邮箱到 [email protected],我们会很快的为您处理。