unicodedata.normalize(form,unistr)如何工作?

发布于 2021-01-29 18:34:00

在API文档上,http://docs.python.org/2/library/unicodedata.html#unicodedata.normalize。它说

返回正常的形式 形式 为Unicode字符串 UNISTR 。格式的有效值为’NFC’,’NFKC’,’NFD’和’NFKD’。

文档相当模糊,有人可以valid values用一些例子解释吗?

关注者
0
被浏览
44
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    我发现文档非常清晰,但是这里有一些代码示例:

    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’(=分解)形式都将单个组合字符(如ä)转换为两个字符(a+两个点)。两种’C’(= compose)形式都相反。

    出于兼容性目的,两个“
    K”形式用于转换添加到Unicode的字符。例如,为了支持不能在符号周围画圆的软件,有一组“带圆圈的数字”,例如①(统一编号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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看