python中Unicode 数据库访问(Unicode Character Database)

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

该模块使用与 Unicode 标准附件 #44 "Unicode 字符数据库" 中所定义的相同名称和符号。 它定义了以下函数:

unicodedata.lookup(name)

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

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

unicodedata.name(chr [, default])

返回分配给字符 chr 的名称作为字符串。如果没有定义名称,则返回 default ,如果没有给出,则 ValueError 被引发。

unicodedata.decimal(chr [, default])

返回分配给字符 chr 的十进制值作为整数。 如果没有定义这样的值,则返回 default ,如果没有给出,则 ValueError 被引发。

unicodedata.digit(chr [, default])

返回分配给字符 chr 的数字值作为整数。 如果没有定义这样的值,则返回 default ,如果没有给出,则 ValueError 被引发。

unicodedata.numeric(chr [, default])

返回分配给字符 chr 的数值作为浮点数。 如果没有定义这样的值,则返回 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 的正常形式 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)完全相同。 但是, Unicode 支持它与现有字符集(例如 gb2312 )的兼容性。

正规形式KD(NFKD)将应用兼容性分解,即用其等价项替换所有兼容性字符。 正规形式KC(NFKC)首先应用兼容性分解,然后是规范组合。

即使两个 unicode 字符串被规范化并且人类读者看起来相同,如果一个具有组合字符而另一个没有,则它们可能无法相等。

unicodedata.is_normalized(form , unistr)

判断 Unicode 字符串 unistr 是否为正规形式 formform 的有效值为 'NFC', 'NFKC', 'NFD' 和 'NFKD'。

在 3.8 版本加入.

此外,该模块暴露了以下常量:

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'
相关推荐
RestCloud27 分钟前
在制造业数字化转型浪潮中,数据已成为核心生产要素。然而,系统割裂、数据滞后、开发运维成本高等问题,却像顽固的 “数据枷锁”,阻碍着企业发展。ETLCloud与
数据库·postgresql
java1234_小锋31 分钟前
TensorFlow2 Python深度学习 - TensorFlow2框架入门 - 神经网络基础原理
python·深度学习·tensorflow·tensorflow2
JJJJ_iii33 分钟前
【深度学习03】神经网络基本骨架、卷积、池化、非线性激活、线性层、搭建网络
网络·人工智能·pytorch·笔记·python·深度学习·神经网络
!chen38 分钟前
【Spring Boot】自定义starter
java·数据库·spring boot
JJJJ_iii42 分钟前
【深度学习05】PyTorch:完整的模型训练套路
人工智能·pytorch·python·深度学习
十碗饭吃不饱1 小时前
sql报错:java.sql.SQLSyntaxErrorException: Unknown column ‘as0‘ in ‘where clause‘
java·数据库·sql
程序员小远2 小时前
常用的测试用例
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
IT学长编程2 小时前
计算机毕业设计 基于EChants的海洋气象数据可视化平台设计与实现 Python 大数据毕业设计 Hadoop毕业设计选题【附源码+文档报告+安装调试】
大数据·hadoop·python·毕业设计·课程设计·毕业论文·海洋气象数据可视化平台
我是Superman丶2 小时前
【优化】Mysql指定索引查询或忽略某个索引
数据库·mysql
程序定小飞2 小时前
基于springboot的在线商城系统设计与开发
java·数据库·vue.js·spring boot·后端