我有诸如以下的字符串:
'[1, 2, 3]'
and
"{'a': 1, 'b': 2}"
如何将它们转换为列表/字典?
有人提到ast.literal_eval
or eval
可以解析转换为列表/字典的字符串。
有什么区别ast.literal_eval
and 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
作为一个优点,这没有任何风险eval
,因为它不涉及评估函数的业务。eval("subprocess.call(['sudo', 'rm', '-rf', '/'])")
可以删除你的根目录,但是ast.literal_eval("subprocess.call(['sudo', 'rm', '-rf', '/'])")
失败是可以预见的,但文件系统完好无损。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)