给定一个Unicode对象:
u'[obj1,obj2,ob3]'
你如何将其转换为普通对象列表?
给定一个Unicode对象:
u'[obj1,obj2,ob3]'
import ast
s = u'[obj1,obj2,ob3]'
n = ast.literal_eval(s)
n
[obj1, obj2, ob3]
你是不是想要将Unicode字符串转换为字符串列表?顺便提一下,在处理Unicode时需要知道编码方式。这里我使用了UTF-8。
>>> s = u'[obj1,obj2,ob3]'
>>> n = [e.encode('utf-8') for e in s.strip('[]').split(',')]
>>> n
['obj1', 'obj2', 'ob3']
repr()
基本上可以返回对象内容的任意表示形式。 - user355252repr()
并不要求返回一个符合Python语法的对象表示形式,而且对于大多数对象来说,它实际上并没有。基本上只有原始类型和标准容器才有一个有效的Python语法repr()
,对于这些类型,出于安全原因,最好使用ast.literal_eval()
而不是eval()
。 - user355252ast.literal_eval
而不是eval
。感谢您添加这个内容。我同意您的其他意见。但对于大多数常见目的,repr返回一个可被eval回来的字符串,但也有例外情况。 - Senthil Kumaranyourutf8str = yourunicodestr.encode('utf-8')
。当Unicode数据未显示Unicode u...
使用openpyxl导出Excel表格数据时,我的Unicode看起来是不可见的。使用print repr(s)
查看它。
>>>print(data)
>>>print(type(data))
["Independent", "Primary/Secondary Combined", "Coed", "Anglican", "Boarding"]
<type 'unicode>
>>>print repr(data)
u'["Independent", "Primary/Secondary Combined", "Coed", "Anglican", "Boarding"]'
解决方法:
>>>import ast
>>>data = ast.literal_eval(entry)
>>>print(data)
>>>print(type(data))
["Independent", "Primary/Secondary Combined", "Coed", "Anglican", "Boarding"]
<type 'list'>