我有一段代码,它接收一个格式为Python字典的字符串。
"{'a':'1','b':'2',...}"
我需要将其转换为一个合适的字典格式,已经尝试过两种方法,分别是使用json.loads(s)
和ast.literal_eval(s)
。后者似乎更加健壮,可以接受字符串中的任何引号形式并且能够正常工作,而前者则对引号格式非常挑剔,只要有一种引号格式不正确就会失败。我希望输入尽可能灵活,因此更喜欢使用ast
,但我的一些同事认为它可能不安全。
请问有人能就 ast 和 ast.literal_eval() 的安全性提供建议吗?尤其是与 json.loads() 相比?
谢谢
json.loads
。如果只是一个repr(python_dict)
,即使有时它能工作,语义上也是不正确的。 - agf