python将字符串转换成字典

通过literal_eval

1
2
3
4
5
6
7
8
import ast
user= '{"name" : "Mary", "gender" : "male", "age": 20}'
user_dic = ast.literal_eval(user)
print(type(user_dic))
print(user_dic)
# 输出结果
# <class 'dict'>
# {'name': 'Mary', 'gender': 'male', 'age': 20}

优点:即不存在json进行转换的单双引号问题,也不存在使用eval进行转换的安全性问题

通过json来转换

1
2
3
4
5
6
7
8
import json
user= '{"name" : "Mary", "gender" : "male", "age": 20}'
user_dic = json.loads(user)
print(type(user_dic))
print(user_dic)
# 输出结果
# <class 'dict'>
# {'name': 'Mary', 'gender': 'male', 'age': 20}

优点:安全性尚可

缺点:json语法规定数组或对象之中的字符串必须使用双引号,不能使用单引号

通过eval转换

1
2
3
4
user= '{"name" : "Mary", "gender" : "male", "age": 20}'
user_dic = eval(user)
print(type(user_dic))
print(user_dic)

优点:不存在json转换方式中的单双引号问题

缺点:安全性问题