在Python 中 把字符串转换为字典
例如,将字符串
user_info = ‘{“name” : “john”, “gender” : “male”, “age”: 28}’
转换为字典
user_dict = {“name” : “john”, “gender” : “male”, “age”: 28}
有以下几种方法
1.通过 json 来转换
import json
user_info = '{"name" : "john", "gender" : "male", "age": 28}'
user_dict = json.loads(user_info)
print(type(user_dict))
print(user_dict)
#得到的结果是
<class 'dict'>
{'name': 'john', 'gender': 'male', 'age': 28}
但是使用 json 进行转换存在一个潜在的问题。
json 语法规定 数组或对象之中的字符串必须使用双引号,不能使用单引号,如果出现下列情况就报错
import json
user_info = "{'name' : 'john', 'gender': 'male', 'age': 28}"
user_dict = json.loads(user_info)
print(type(user_dict))
print(user_dict)
2.通过 eval() 函数 来转换 (慎用)
user_info = "{'name' : 'john', 'gender': 'male', 'age': 28}"
user_dict = eval(user_info)
print(type(user_dict))
print(user_dict)
因为 eval() 会把字符串表达式当作代码来执行,所以能生成字典。但是如果是从用户输入的内容中获取字符串表达式,那就很容易出现安全问题。
3.通过 ast 模块下的 literal_eval() 函数来转换
import ast
user_info = "{'name' : 'john', 'gender': 'male', 'age': 28}"
user_dict = ast.literal_eval(user_info)
print(type(user_dict))
print(user_dict)
这种方式就会安全很多。所以要将字符串转换为字典,推荐使用这种方法。