7 python string dictionary list python-2.7
我有如下字符串:
'[1, 2, 3]'
和
"{'a': 1, 'b': 2}"
如何将它们转换为list/dict?
有人提到ast.literal_eval或者eval可以解析转换为list/dict的字符串.
ast.literal_eval和之间有什么区别eval?
ast.literal_eval解析抽象语法树.' 你几乎有json,你可以使用json.loads,但你需要双引号,而不是单引号,使字典键有效.
import ast
result = ast.literal_eval("{'a': 1, 'b': 2}")
assert type(result) is dict
result = ast.literal_eval("[1, 2, 3]")
assert type(result) is list
Run Code Online (Sandbox Code Playgroud)
作为一个优点,这没有任何风险eval,因为它没有进入评估功能的业务.eval("subprocess.call(['sudo', 'rm', '-rf', '/'])")可以删除您的根目录,但ast.literal_eval("subprocess.call(['sudo', 'rm', '-rf', '/'])")可以预测,文件系统完好无损.
小智 7
使用评估函数:
l = eval('[1, 2, 3]')
d = eval("{'a':1, 'b': 2}")
Run Code Online (Sandbox Code Playgroud)
只需确保您知道这些字符串来自何处,并且不允许评估用户输入并执行恶意操作。