当前位置: 首页 > 面试题库 >

规范化Unicode

逑翰翮
2023-03-14
问题内容

在Python中,是否存在标准化unicode字符串的标准方法,以使其仅包含可用于表示它的最简单的unicode实体?

我的意思是,一些东西,想翻译的顺序['LATIN SMALL LETTER A', 'COMBINING ACUTE ACCENT']['LATIN SMALL LETTER A WITH ACUTE']

查看问题出在哪里:

>>> import unicodedata
>>> char = "á"
>>> len(char)
1
>>> [ unicodedata.name(c) for c in char ]
['LATIN SMALL LETTER A WITH ACUTE']

但现在:

>>> char = "á"
>>> len(char)
2
>>> [ unicodedata.name(c) for c in char ]
['LATIN SMALL LETTER A', 'COMBINING ACUTE ACCENT']

当然,我可以遍历所有字符并进行手动替换等,但是效率不高,我敢肯定我会错过一半的特殊情况,并且会犯错误。


问题答案:

unicodedata模块提供一个.normalize()功能,您要标准化为NFC格式:

>>> unicodedata.normalize('NFC', u'\u0061\u0301')
u'\xe1'
>>> unicodedata.normalize('NFD', u'\u00e1')
u'a\u0301'

NFC或“普通形式组合”返回组成的字符,NFD,“普通形式分解”可为您提供分解的组合字符。

附加的NFKC和NFKD表单处理兼容性代码点。例如,U + 2160(罗马数字ONE)与U +
0049(拉丁字母大写字母I)实际上是一样的东西,但是它以Unicode标准存在,以保持与单独处理它们的编码的兼容性。使用NFKC或NFKD形式,除了组成或分解字符外,还将所有“兼容”字符替换为其规范形式:

>>> unicodedata.normalize('NFC', u'\u2167')  # roman numeral VIII
u'\u2167'
>>> unicodedata.normalize('NFKC', u'\u2167') # roman numeral VIII
u'VIII'

注意,不能保证组合形式和分解形式是可交换的。将组合字符归一化为NFC形式,然后将结果转换回NFD形式并不总是得到相同的字符序列。Unicode标准维护例外列表;
出于各种原因,此列表中的字符是可组合的,但不能分解为它们的组合形式。另请参阅成分排除表中的文档。



 类似资料:
  • 主要内容:范式的类型规范化是在数据库中组织数据的过程。 规范化用于最小化关系或关系集的冗余。 它还用于消除插入,更新和删除异常等不良特性。 规范化将较大的表分成较小的表,并使用关系链接它们。 普通表单用于减少数据库表中的冗余。 范式的类型 有四种类型的范式: 范式 描述说明 1NF 如果它包含原子值,则关系为第范式(1NF)。 2NF 如果它在1NF中,则关系将在2NF中,并且所有非关键属性完全依赖于主键。 3NF

  • 问题内容: 在Java中创建XML规范格式的最简单方法是什么?你有一些完成的代码吗?我在网上找到了几个链接,例如this,this和this,但我无法使其正常工作:/ 谢谢, 伊万 编辑:我使用了在那里提出的规范化器,但是得到了奇怪的结果。更精确地说,此方法不会删除元素之间的空格…这就是我得到的: 问题答案: Apache XML Security项目 的Canonicalizer类:

  • 非规范化数据不存储规范化的数据。换句话说非规范化意味着相同数据的多个拷贝同时存在。 上一章中,我们在帖子中非规范化评论总数,以避免每次都加载所有的评论。在数据建模意义上说这是冗余的,因为我们可以通过计数每个评论,随时计算出该总数(当不考虑运行速度)。 非规范化通常意味着额外的开发工作。在例子中,我们每次添加或删除评论时,还需要同时更新相关的帖子,以确保 commentsCount 字段保持准确。这

  • 我了解批次归一化有助于更快的训练,将激活转向单位高斯分布,从而解决梯度消失问题。批次规范行为在训练(使用每个批次的平均值/var)和测试时间(使用训练阶段的最终运行平均值/var)中的应用不同。 另一方面,实例归一化作为对比度归一化,如本文所述https://arxiv.org/abs/1607.08022。作者提到,输出样式化的图像不应依赖于输入内容图像的对比度,因此实例规范化有助于实现。 但是

  • 我可以在输入层之后使用批处理规范化层而不规范化我的数据吗?我可以期望得到类似的效果/性能吗? 在keras函数中,它应该是这样的:

  • coolie 遵循的是 CMD 规范。 CMD 规范 CMD 最先是由 seajs 提出的,是 commonJS 规范的前端实现。 与 commonJS 的表现是一致的,即:依赖就近,顺序执行。 define(function(require, exports, module){ var xhr = require('./xhr.js'); xhr.ajax(...); });