假设我有一个代表一些嵌套列表的字符串,我想将它转换成真实的东西。我可以这样做,我认为:
exec "myList = ['foo', ['cat', ['ant', 'bee'], 'dog'], 'bar', 'baz']"
但是在用户可能提供字符串来执行的环境中,这可能/将是一个坏主意。有人对一个可以完成同样事情的整洁的解析器有任何想法吗?
假设我有一个代表一些嵌套列表的字符串,我想将它转换成真实的东西。我可以这样做,我认为:
exec "myList = ['foo', ['cat', ['ant', 'bee'], 'dog'], 'bar', 'baz']"
但是在用户可能提供字符串来执行的环境中,这可能/将是一个坏主意。有人对一个可以完成同样事情的整洁的解析器有任何想法吗?
>>> import ast
>>> mylist = ast.literal_eval("['foo', ['cat', ['ant', 'bee'], 'dog'], 'bar', 'baz']")
>>> mylist
['foo', ['cat', ['ant', 'bee'], 'dog'], 'bar', 'baz']
安全地评估表达式节点或包含 Python 表达式的字符串。提供的字符串或节点只能由以下 Python 文字结构组成:字符串、数字、元组、列表、字典、布尔值和无。
这可用于安全地评估来自不受信任来源的包含 Python 表达式的字符串,而无需自己解析值。