Unicode 列表到字符串列表 Python 2
Unicode list to String list Python 2
我有这个列表:
l = [u'\xf9', u'!']
我想在此列表中转换它:
l2 = ['ù','!']
我该怎么做?为什么 l.encode() 不起作用?
您在使用 Python 2 吗?如果是这样,您可能会被 Python 显示字符串的方式所愚弄。
如您所见,'\xc3\xb9'
是代码点 U+00F9 ('ù'
) 的 UTF-8 编码表示。所以:
# code point
>>> u'ù'
u'\xf9'
# seems wrong ?
>>> u'ù'.encode('utf-8')
'\xc3\xb9'
# No, not at all (at least on my UTF-8 terminal)
>>> print(u'ù'.encode('utf-8'))
ù
以你的例子为例:
>>> l = [u'\xf9', u'!']
>>> print(l)
[u'\xf9', u'!']
>>> l[0]
u'\xf9'
>>> print(l[0])
ù
>>> l2 = [u.encode('utf-8') for u in l]
>>> l2
['\xc3\xb9', '!']
>>> print(l2)
['\xc3\xb9', '!']
>>> print(l2[0])
ù
我同意所有这些都是 rather inconsistent and source of frustration。这就是 string/unicode 支持在 Python 3 中进行重大重写的原因。那里:
# Python 3
>>> l = [u'\xf9', u'!']
>>> l
['ù', '!']
我有这个列表:
l = [u'\xf9', u'!']
我想在此列表中转换它:
l2 = ['ù','!']
我该怎么做?为什么 l.encode() 不起作用?
您在使用 Python 2 吗?如果是这样,您可能会被 Python 显示字符串的方式所愚弄。
如您所见,'\xc3\xb9'
是代码点 U+00F9 ('ù'
) 的 UTF-8 编码表示。所以:
# code point
>>> u'ù'
u'\xf9'
# seems wrong ?
>>> u'ù'.encode('utf-8')
'\xc3\xb9'
# No, not at all (at least on my UTF-8 terminal)
>>> print(u'ù'.encode('utf-8'))
ù
以你的例子为例:
>>> l = [u'\xf9', u'!']
>>> print(l)
[u'\xf9', u'!']
>>> l[0]
u'\xf9'
>>> print(l[0])
ù
>>> l2 = [u.encode('utf-8') for u in l]
>>> l2
['\xc3\xb9', '!']
>>> print(l2)
['\xc3\xb9', '!']
>>> print(l2[0])
ù
我同意所有这些都是 rather inconsistent and source of frustration。这就是 string/unicode 支持在 Python 3 中进行重大重写的原因。那里:
# Python 3
>>> l = [u'\xf9', u'!']
>>> l
['ù', '!']