【发布时间】:2018-05-11 01:05:50
【问题描述】:
我有一个 Unicode 字符代码列表,我需要在 python 2.7 上将其转换为字符。
U+0021
U+0022
U+0023
.......
U+0024
怎么做?
【问题讨论】:
标签: python python-2.7 unicode
我有一个 Unicode 字符代码列表,我需要在 python 2.7 上将其转换为字符。
U+0021
U+0022
U+0023
.......
U+0024
怎么做?
【问题讨论】:
标签: python python-2.7 unicode
这个正则表达式会将所有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 字符。【讨论】:
下面编写的代码将获取每个 Unicode 字符串并将其转换为字符串。
for I in list:
print(I.encode('ascii', 'ignore'))
【讨论】:
a = 'U+aaa'
a.encode('ascii','ignore')
'aaa'
这会将 unicode 转换为 Ascii,我认为这是您想要的。
【讨论】:
str 但在 python3 中返回一个 byte