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

Den*_*ory 1 python

我将Python列表保存为这样的字符串表示形式:

a = "['item 1', 'item 2', 'item 3']"
Run Code Online (Sandbox Code Playgroud)

我想将该字符串转换为列表对象。我试图直接加载或使用它,list(a)但它只是拆分字符串的每个字符。我想我可以通过删除第一个字符,删除最后一个字符,基于拆分,然后删除单引号的方式来手动解析它。但是没有更好的方法直接将其转换,因为该字符串可以准确地表示列表看起来像什么?

C.B*_*.B. 6

使用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']
>>>
Run Code Online (Sandbox Code Playgroud)

  • 我是所选答案的作者,我来到这里(1 年后)说这是应该做的。使用 `ast` 而不是 `eval` (2认同)

fas*_*uto 5

您可以尝试评估功能

>>> a = "['item 1', 'item 2', 'item 3']"
>>> eval(a)
['item 1', 'item 2', 'item 3']
>>> eval(a)[2]
'item 3'
Run Code Online (Sandbox Code Playgroud)

请注意,根据输入的不同,eval()可能不安全。

编辑:尊敬的Google用户,如果您想将列表的表示形式转换为列表,请使用ast作为@CB建议。这个答案是不正确的。

ast.literal_eval文档中:

安全地评估表达式节点或包含Python文字或容器显示的字符串。提供的字符串或节点只能由以下Python文字结构组成:字符串,字节,数字,元组,列表,字典,集合,布尔值和无。