"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 标准附件 #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）。

-[ 备注 ]-

[1] https://www.unicode.org/Public/17.0.0/ucd/NameAliases.txt

[2] https://www.unicode.org/Public/17.0.0/ucd/NamedSequences.txt
