假设我有一个代表一些嵌套列表的字符串,我想把它转换成真实的东西。我想,我能做到这一点:
exec "myList = ['foo', ['cat', ['ant', 'bee'], 'dog'], 'bar', 'baz']"
但是在用户可能提供字符串来执行的环境中,这可能是个坏主意。有没有人想要一个能够完成同样事情的整洁解析器呢?
答案 0 :(得分:24)
>>> import ast
>>> mylist = ast.literal_eval("['foo', ['cat', ['ant', 'bee'], 'dog'], 'bar', 'baz']")
>>> mylist
['foo', ['cat', ['ant', 'bee'], 'dog'], 'bar', 'baz']
安全地评估表达式节点或 包含Python的字符串 表达。字符串或节点 提供的可能只包括 遵循Python文字结构: 字符串,数字,元组,列表, dicts,booleans和None。
这可用于安全评估 包含Python表达式的字符串 来自不受信任的来源,没有 需要自己解析价值观。