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

时间:2009-12-18 06:54:20

标签: python parsing string exec nested-lists

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

exec "myList = ['foo', ['cat', ['ant', 'bee'], 'dog'], 'bar', 'baz']"

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

1 个答案:

答案 0 :(得分:24)

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

ast.literal_eval

  

安全地评估表达式节点或   包含Python的字符串   表达。字符串或节点   提供的可能只包括   遵循Python文字结构:   字符串,数字,元组,列表,   dicts,booleans和None。

     

这可用于安全评估   包含Python表达式的字符串   来自不受信任的来源,没有   需要自己解析价值观。