【问题标题】:How to "normalize" python 3 unicode string如何“规范化”python 3 unicode 字符串
【发布时间】:2018-04-16 02:09:58
【问题描述】:

我需要比较两个字符串。 aa 是从 PDF 文件中提取的(使用 pdfminer/chardet),bb 是键盘输入。如何规范化第一个字符串以进行比较?

>>> aa = "ā"
>>> bb = "ā"
>>> aa == bb
False
>>> 
>>> aa.encode('utf-8')
b'\xc4\x81'
>>> bb.encode('utf-8')
b'a\xcc\x84'

【问题讨论】:

    标签: python-3.x utf-8 python-unicode


    【解决方案1】:

    你用unicodedata.normalize标准化:

    >>> aa = b'\xc4\x81'.decode('utf8')   # composed form
    >>> bb = b'a\xcc\x84'.decode('utf8')  # decomposed form
    >>> aa
    'ā'
    >>> bb
    'ā'
    >>> aa == bb
    False
    >>> import unicodedata as ud
    >>> aa == ud.normalize('NFC',bb)  # compare composed
    True
    >>> ud.normalize('NFD',aa) == bb  # compare decomposed
    True
    

    【讨论】:

      猜你喜欢
      • 2023-03-06
      • 2012-02-07
      • 2011-12-10
      • 2011-06-20
      • 1970-01-01
      • 2016-08-29
      • 2017-11-19
      • 2015-11-01
      • 2010-10-10
      相关资源
      最近更新 更多