在 API 文档上,http://docs.python.org/2/library/unicodedata.html#unicodedata.normalize。它说
返回Unicode 字符串unistr的范式。表单的有效值为“NFC”、“NFKC”、“NFD”和“NFKD”。
文档比较模糊,有人可以valid values
用一些例子来解释吗?
在 API 文档上,http://docs.python.org/2/library/unicodedata.html#unicodedata.normalize。它说
返回Unicode 字符串unistr的范式。表单的有效值为“NFC”、“NFKC”、“NFD”和“NFKD”。
文档比较模糊,有人可以valid values
用一些例子来解释吗?
我发现文档很清楚,但这里有一些代码示例:
from unicodedata import normalize
print '%r' % normalize('NFD', u'\u00C7') # decompose: convert Ç to "C + ̧"
print '%r' % normalize('NFC', u'C\u0327') # compose: convert "C + ̧" to Ç
两种 'D' (=decompose) 形式都将单个组合字符(如ä
)转换为两个字符(a
+ 两个点)。两种“C”(=compose)形式都相反。
出于兼容性目的,这两种“K”形式用于转换添加到 Unicode 的字符。例如,为了支持不能在符号周围画圆圈的软件,有一组“圆圈数字”,如①(unicode number 2460)。当我们对其应用规范分解 (NFD) 时,它什么也不做:
print '%r' % normalize('NFD', u'\u2460') # u'\u2460'
但是,兼容性分解(NFKD)将返回相应的“兼容”字符:
print '%r' % normalize('NFKD', u'\u2460') # 1
有关更多详细信息,请参阅http://en.wikipedia.org/wiki/Unicode_equivalence。