如何将表示嵌套列表的字符串解析为实际列表?

10 python string parsing exec nested-lists

假设我有一个代表一些嵌套列表的字符串,我想把它转换成真实的东西.我想,我能做到这一点:

exec "myList = ['foo', ['cat', ['ant', 'bee'], 'dog'], 'bar', 'baz']"
Run Code Online (Sandbox Code Playgroud)

但是在用户可能提供字符串来执行的环境中,这可能是一个坏主意.有没有人想要一个能够完成同样事情的整洁解析器?

ber*_*nie 25

>>> import ast
>>> mylist = ast.literal_eval("['foo', ['cat', ['ant', 'bee'], 'dog'], 'bar', 'baz']")
>>> mylist
['foo', ['cat', ['ant', 'bee'], 'dog'], 'bar', 'baz']
Run Code Online (Sandbox Code Playgroud)

ast.literal_eval:

安全地评估表达式节点或包含Python表达式的字符串.提供的字符串或节点可能只包含以下Python文字结构:字符串,数字,元组,列表,dicts,布尔值和None.

这可以用于安全地评估包含来自不可信来源的Python表达式的字符串,而无需自己解析值.