【问题标题】:Convert Unicode char code to char on Python在 Python 上将 Unicode 字符代码转换为字符
【发布时间】:2018-05-11 01:05:50
【问题描述】:

我有一个 Unicode 字符代码列表,我需要在 python 2.7 上将其转换为字符。

U+0021
U+0022
U+0023
.......
U+0024

怎么做?

【问题讨论】:

    标签: python python-2.7 unicode


    【解决方案1】:

    这个正则表达式会将所有U+nnnn序列替换为对应的Unicode字符:

    import re
    
    s = u'''\
    U+0021
    U+0022
    U+0023
    .......
    U+0024
    '''
    
    s = re.sub(ur'U\+([0-9A-F]{4})',lambda m: unichr(int(m.group(1),16)),s)
    
    print(s)
    

    输出:

    !
    "
    #
    .......
    $
    

    解释:

    • unichr 给出代码点的字符,例如unichr(0x21) == u'!'
    • int('0021',16) 将十六进制字符串转换为整数。
    • lambda(m): expression 是接收正则表达式匹配的匿名函数。
      它定义了一个等效于def func(m): return expression 但内联的函数。
    • re.sub 匹配一个模式并将每个匹配发送到一个返回替换的函数。在本例中,模式为U+hhhh,其中 h 是十六进制数字,替换函数将十六进制数字字符串转换为 Unicode 字符。

    【讨论】:

    • 是的,我认为应该有更简单的东西(谢谢!
    【解决方案2】:

    下面编写的代码将获取每个 Unicode 字符串并将其转换为字符串。

    for I in list:
        print(I.encode('ascii', 'ignore'))
    

    【讨论】:

      【解决方案3】:
      a = 'U+aaa'
      a.encode('ascii','ignore')
      'aaa'
      

      这会将 unicode 转换为 Ascii,我认为这是您想要的。

      【讨论】:

      • 这在 python 2 中返回一个 str 但在 python3 中返回一个 byte
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-21
      • 2013-04-29
      • 2018-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多