如何将表示嵌套列表的字符串解析为实际列表?
假设我有一个字符串,它表示一些嵌套的列表,我想把它转换成真正的列表。我觉得我可以这样做:
exec "myList = ['foo', ['cat', ['ant', 'bee'], 'dog'], 'bar', 'baz']"
但是在一个用户可能会提供字符串来执行的环境中,这样做可能会有风险。这有没有人能提供一个干净的解析器,来实现同样的功能呢?
1 个回答
33
>>> import ast
>>> mylist = ast.literal_eval("['foo', ['cat', ['ant', 'bee'], 'dog'], 'bar', 'baz']")
>>> mylist
['foo', ['cat', ['ant', 'bee'], 'dog'], 'bar', 'baz']
这个函数可以安全地评估一个表达式节点或者一个包含Python表达式的字符串。你给它的字符串或节点只能包含以下几种Python的基本数据结构:字符串、数字、元组、列表、字典、布尔值和None。
这个功能可以用来安全地处理来自不可信来源的字符串,这些字符串中包含Python表达式,而你不需要自己去解析这些值。