我有字符串,例如:
'[1, 2, 3]'

"{'a': 1, 'b': 2}"
我如何将它们转换为列表/字典?

有人提到 ast.literal_evaleval 可以解析转换为列表/字典的字符串。
ast.literal_evaleval有什么区别?

最佳答案

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', '/'])") 会以可预见的方式失败,并且您的文件系统完好无损。

关于python - 如何将字符串转换为字典或列表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29712962/

10-12 20:41