有三种方法:
- eval(字符串)
- yaml.load(字符串, Loader=yaml.FullLoader)
- ast.literal_eval(字符串)
但是要注意,转换之前,原始的字典中key与value必须是python原生支持的类型,不能是datetime
,pandas
这种类型
示例代码
import yaml
import ast
dict_string = str({
"name": "小明",
"age": 12,
"成绩": 59.99,
"入学时间": "2021-01-01",
})
print(dict_string)
得到字符串dict_string
的结果:
'{\'name\': \'小明\', \'age\': 12, \'成绩\': 59.99, \'入学时间\': \'2021-01-01\'}'
使用如下方法将 string字符串 -> dict字典
eval(dict_string) # 方法1
yaml.load(dict_string, Loader=yaml.FullLoader) # 方法2
ast.literal_eval(dict_string) # 方法3
都可以得到想要的结果:
{'name': '小明', 'age': 12, '成绩': 59.99, '入学时间': '2021-01-01'}
但是,如果将dict_string
改为:
from datetime import datetime
dict_string = str({
"name": "小明",
"age": 12,
"成绩": 59.99,
"入学时间": datetime(2021, 1, 1),
})
则结果都会出错!