我将Python列表保存为字符串表示形式,如下所示:
a = "['item 1', 'item 2', 'item 3']"
我希望将该字符串转换为列表对象。我试图直接加载它,或使用list(a)
但它只是拆分字符串的每个字符。我想我可以手动解析它,删除第一个字符,删除最后一个字符,根据,
拆分,然后删除单引号..但是没有更好的方法直接转换它,因为那string是列表的精确表示形式?
答案 0 :(得分:4)
您可以尝试eval function
>>> a = "['item 1', 'item 2', 'item 3']"
>>> eval(a)
['item 1', 'item 2', 'item 3']
>>> eval(a)[2]
'item 3'
请注意,eval()可能不安全,具体取决于输入。
修改: 亲爱的Google用户,如果您想将列表的表示形式转换为列表,请使用ast作为@C.B. suggested。这个答案不正确。
来自ast.literal_eval文档:
安全地评估表达式节点或包含Python文字或容器显示的字符串。提供的字符串或节点可能只包含以下Python文字结构:字符串,字节,数字,元组,列表,字符串,集合,布尔值和无。
答案 1 :(得分:2)
使用ast
模块
>>> import ast
>>> list_as_string = "['item 1', 'item 2', 'item 3']"
>>> _list = ast.literal_eval(list_as_string)
>>> _list
['item 1', 'item 2', 'item 3']
>>>