将字符串转换为字典?

30 浏览
0 Comments

将字符串转换为字典?

这个问题已经有了答案

将字典的字符串表示转换为字典

我有一个脚本,它将字典转换为字符串并保存到文件中。然后我想加载该文件并将其用作字典,但它是一个字符串。是否有类似 int(“7”) 可以将格式为字典的字符串({a:1,b:2})更改为字典?我尝试过 dict(),但似乎这不是它的作用。我听说过一些涉及 JSON 和 eval()的过程,但我真的不知道这是做什么用的。程序加载与其保存相同的数据,如果有人编辑它并且它无法正常工作,那也不是我的问题(我不需要任何确认字典数据的高级方法或任何内容)。

admin 更改状态以发布 2023年5月20日
0
0 Comments

这个格式不是 JSON,而是 YAML,你可以使用PyYAML来解析它:

>>> import yaml
>>> s = '{a: 1, b: 2}'
>>> d = yaml.load(s)
>>> d
{'a': 1, 'b': 2}
>>> type(d)

0
0 Comments

试试这个,这是最安全的方法:

import ast
ast.literal_eval("{'x':1, 'y':2}")
=> {'y': 2, 'x': 1}

所有基于eval()的解决方案都是危险的,恶意代码可能会注入到字符串中并得到执行。

根据文档,表达式会被安全地评估。此外,根据源代码literal_eval将字符串解析为Python AST(源树),仅在它是一个字面值时返回。代码永远不会被执行,仅被解析,因此没有理由存在安全风险。

0