跳转至

Python 字符串字典转字典

概要: 使用ast.literal_eval()安全转换字符串字典

创建时间: 2022.12.14 20:59:38

更新时间: 2022.12.14 21:20:31

问题

将下面的字符串字典变量转成标准的Python字典数据

Python
user_info = "{'name': 'Jack', 'age': 28}"

方法

首先排除使用 json.loads() 方法,因为字符串中的单引号不能被正确识别。

使用ast.literal_eval(推荐)

image.png
从文档可以看出,此函数仅用于安全转换Python中的数据结构,是十分理想的工具。示例如下

Python
import ast
d0 = ast.literal_eval(user_info)
image.png

使用eval(不推荐)

示例如下

Python
d1 = eval(user_info)
效果如下
image.png
但这里面存在危险性,因为 eval 函数可以自动将字符串转化为Python语句执行
image.png
如果执行了如 eval("os.system('rm -rf xxx')"),那么系统中对应文件可能被删除,详见 Eval really is dangerous | Ned Batchelder

参考