unicodedata --- Unicode 数据库¶
本模块提供对 Unicode 字符数据库(UCD)的访问,该数据库为所有 Unicode 字符定义字符属性。此数据库中包含的数据编译自 UCD 17.0.0 版。
本模块使用与 Unicode 标准附件 #44 "Unicode 字符数据库" 中定义的相同名称和符号。
参见
有关 Unicode 以及如何使用此模块的更多信息,请参阅 Unicode 指南。
查找 |
|
按名称查找字符 |
|
返回分配给字符的名称 |
|
数值 |
|
字符的十进制值 |
|
字符的数字值 |
|
字符的数值 |
|
属性 |
|
字符的双向类别 |
|
字符的 Unicode 区块 |
|
字符的一般类别 |
|
字符的规范组合类别 |
|
字符分解映射 |
|
字符的东亚宽度 |
|
检查字符是否具有 Extended_Pictographic 属性 |
|
字符的 Grapheme_Cluster_Break 属性 |
|
字符的 Indic_Conjunct_Break 属性 |
|
检查字符是否为有效的标识符后续字符 |
|
检查字符是否为有效的标识符起始字符 |
|
字符的镜像属性 |
|
正规化 |
|
返回字符串的正规形式 |
|
检查 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 ,如果没有给出,则
ValueError被引发。例如:>>> unicodedata.decimal('\N{ARABIC-INDIC DIGIT NINE}') 9 >>> unicodedata.decimal('\N{SUPERSCRIPT NINE}', -1) -1
- unicodedata.digit(chr, default=None, /)¶
返回分配给字符 chr 的数字值作为整数。 如果没有定义这样的值,则返回 default ,如果没有给出,则引发
ValueError:>>> unicodedata.digit('\N{SUPERSCRIPT NINE}') 9
- unicodedata.numeric(chr, default=None, /)¶
返回分配给字符 chr 的数值作为浮点数。 如果没有定义这样的值,则返回 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.block(chr, /)¶
返回分配给字符 chr 的 区块。例如:
>>> unicodedata.block('S')\n'Basic Latin'
Added in version 3.15.
- unicodedata.mirrored(chr, /)¶
返回分配给字符 chr 的镜像属性为整数。如果字符在双向文本中被识别为“镜像”字符,则返回
1,否则返回0。例如:>>> unicodedata.mirrored('>') 1
- unicodedata.isxidstart(chr, /)¶
如果按照 Unicode 标准附件 #31,chr 是有效的标识符起始字符,也就是说它具有
XID_Start属性,则返回True。否则返回False。例如:>>> unicodedata.isxidstart('S')\nTrue\n>>> unicodedata.isxidstart('0')\nFalse
Added in version 3.15.
- unicodedata.isxidcontinue(chr, /)¶
如果按照 Unicode 标准附件 #31,chr 是有效的标识符字符,也就是说它具有
XID_Continue属性,则返回True。否则返回False。例如:>>> unicodedata.isxidcontinue('S')\nTrue\n>>> unicodedata.isxidcontinue(' ')\nFalse
Added in version 3.15.
- unicodedata.decomposition(chr, /)¶
返回分配给字符 chr 的字符分解映射作为字符串。如果未定义此类映射,则返回空字符串。例如:
>>> unicodedata.decomposition('Ã') '0041 0303'
- unicodedata.grapheme_cluster_break(chr, /)¶
返回分配给字符的 Grapheme_Cluster_Break 属性。
Added in version 3.15.
- unicodedata.indic_conjunct_break(chr, /)¶
返回分配给字符的 Indic_Conjunct_Break 属性。
Added in version 3.15.
- unicodedata.extended_pictographic(chr, /)¶
如果字符具有 Extended_Pictographic 属性,则返回
True,否则返回False。Added in version 3.15.
- unicodedata.normalize(form, unistr, /)¶
返回 Unicode 字符串 unistr 的正规形式 form 。 form 的有效值为 '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)实际上是相同的。 但是,为了与现有字符集(例如 gb2312 )兼容,Unicode 仍然支持它。
正规形式KD(NFKD)将应用兼容性分解,也就是用其等价项替换所有兼容性字符。 正规形式KC(NFKC)首先应用兼容性分解,然后是规范组合。
即使两个 unicode 字符串被规范化并且人类读者看起来相同,如果一个具有组合字符而另一个没有,则它们可能无法相等。
- unicodedata.is_normalized(form, unistr, /)¶
判断 Unicode 字符串 unistr 是否为正规形式 form。 form 的有效值为 'NFC', 'NFKC', 'NFD' 和 'NFKD'。
Added in version 3.8.
- unicodedata.iter_graphemes(unistr, start=0, end=sys.maxsize, /)¶
返回一个用于迭代字素簇的迭代器。指定可选的 start 时,迭代将从该位置开始。指定可选的 end 时,迭代将在该位置停止。
将生成的条目转换为字符串时,会返回与该字素簇相对应的子字符串。它的
start和end属性表示该字素簇的起始位置和结束位置。它使用 Unicode 标准附件 #29 "Unicode 文本分割" 中定义的扩展字素簇规则。
Added in version 3.15.
此外,本模块还公开以下常量:
- unicodedata.unidata_version¶
此模块中使用的 Unicode 数据库的版本。
- unicodedata.ucd_3_2_0¶
这是一个具有整个模块大多数方法的对象,但它改用 Unicode 数据库 3.2 版,适用于需要此特定 Unicode 数据库版本的应用程序(例如 IDNA)。
备注