unicodedata --- Unicode 数据库


本模块提供对 Unicode 字符数据库(UCD)的访问,该数据库为所有 Unicode 字符定义字符属性。此数据库中包含的数据编译自 UCD 17.0.0 版

本模块使用与 Unicode 标准附件 #44 "Unicode 字符数据库" 中定义的相同名称和符号。

参见

有关 Unicode 以及如何使用此模块的更多信息,请参阅 Unicode 指南

查找

lookup(name)

按名称查找字符

name(chr)

返回分配给字符的名称

数值

decimal(chr)

字符的十进制值

digit(chr)

字符的数字值

numeric(chr)

字符的数值

属性

bidirectional(chr)

字符的双向类别

block(chr)

字符的 Unicode 区块

category(chr)

字符的一般类别

combining(chr)

字符的规范组合类别

decomposition(chr)

字符分解映射

east_asian_width(chr)

字符的东亚宽度

extended_pictographic(chr)

检查字符是否具有 Extended_Pictographic 属性

grapheme_cluster_break(chr)

字符的 Grapheme_Cluster_Break 属性

indic_conjunct_break(chr)

字符的 Indic_Conjunct_Break 属性

isxidcontinue(chr)

检查字符是否为有效的标识符后续字符

isxidstart(chr)

检查字符是否为有效的标识符起始字符

mirrored(chr)

字符的镜像属性

正规化

normalize(form, unistr)

返回字符串的正规形式

is_normalized(form, unistr)

检查 Unicode 字符串是否已正规化

文本分割

iter_graphemes(unistr)

迭代字符串中的字素簇

unicodedata.lookup(name, /)

按名称查找字符。如果找到具有给定名称的字符,则返回相应的字符。 如果没有找到,则引发 KeyError。例如:

>>> unicodedata.lookup('LEFT CURLY BRACKET')
'{'

此函数返回的字符与字符串字面值中 \N 转义序列生成的字符相同。例如:

>>> unicodedata.lookup('MIDDLE DOT') == '\N{MIDDLE DOT}'
True

在 3.3 版本发生变更: 已添加对名称别名 [1] 和命名序列 [2] 的支持。

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 标准附件 #31chr 是有效的标识符起始字符,也就是说它具有 XID_Start 属性,则返回 True。否则返回 False。例如:

>>> unicodedata.isxidstart('S')\nTrue\n>>> unicodedata.isxidstart('0')\nFalse

Added in version 3.15.

unicodedata.isxidcontinue(chr, /)

如果按照 Unicode 标准附件 #31chr 是有效的标识符字符,也就是说它具有 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 的正规形式 formform 的有效值为 '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 是否为正规形式 formform 的有效值为 'NFC', 'NFKC', 'NFD' 和 'NFKD'。

Added in version 3.8.

unicodedata.iter_graphemes(unistr, start=0, end=sys.maxsize, /)

返回一个用于迭代字素簇的迭代器。指定可选的 start 时,迭代将从该位置开始。指定可选的 end 时,迭代将在该位置停止。

将生成的条目转换为字符串时,会返回与该字素簇相对应的子字符串。它的 startend 属性表示该字素簇的起始位置和结束位置。

它使用 Unicode 标准附件 #29 "Unicode 文本分割" 中定义的扩展字素簇规则。

Added in version 3.15.

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

unicodedata.unidata_version

此模块中使用的 Unicode 数据库的版本。

unicodedata.ucd_3_2_0

这是一个具有整个模块大多数方法的对象,但它改用 Unicode 数据库 3.2 版,适用于需要此特定 Unicode 数据库版本的应用程序(例如 IDNA)。

备注