Python:要列出的字符串(不分割)

时间:2015-05-28 14:58:07

标签: python

我将Python列表保存为字符串表示形式,如下所示:

a = "['item 1', 'item 2', 'item 3']"

我希望将该字符串转换为列表对象。我试图直接加载它,或使用list(a)但它只是拆分字符串的每个字符。我想我可以手动解析它,删除第一个字符,删除最后一个字符,根据,拆分,然后删除单引号..但是没有更好的方法直接转换它,因为那string是列表的精确表示形式?

2 个答案:

答案 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']
>>>