Python 如何将字符串转为字典?
在 Python 中,我们可以使用 json 模块的 loads() 函数来将一个字符串转换成一个字典。loads,其实就是 “load string” 的缩写。
语法:
import json
json.loads( 字符串 )说明:
字符串必须符合字典格式,才能被 json.loads() 函数正确转换为字典。
示例 1:将 字符串转为字典
import json
s = '{"book": "从0到1", "author": "Jack", "price": 59}'
result = json.loads(s)
print(result)
print(type(result))运行结果如下。
{'book': '从0到1', 'author': 'Jack', 'price': 59}
<class 'dict'>分析:
小伙伴们要搞清楚,上面例子中的 s 是一个字符串,因为它使用单引号包裹着了。这种符合 JSON 格式的字符串,也叫做 “JSON 字符串”。
从结果可以看出,json.loads() 返回的是一个字典。既然返回的是一个字典,接下来我们就可以使用字典的方法来进行操作了。比如想要获取书名,我们可以使用 result['book'] 来实现。
遇到单引号的字符串怎么办?
在实际开发中,小伙伴们可能会遇到下面这样的字符串:
s = "{'name': 'Jack', 'age': 21}"大家注意看,它里面的键名用的是单引号。此时如果我们依然使用 json.loads(s),程序会直接报错崩溃。这是因为 JSON 格式严格规定键名必须是双引号。
实际上,Python 提供了一个极其安全且强大的内置模块:ast。它的 literal_eval() 函数可以完美识别任何合法的 Python 字典字符串,不管是单引号还是双引号。
示例 2:使用 ast 模块
import ast
s = "{'name': 'Jack', 'age': 21}"
result = ast.literal_eval(s)
print(result)运行结果如下。
{'name': 'Jack', 'age': 21}分析:
在企业项目开发中,如果要处理不规则的字典字符串,ast.literal_eval() 才是真正的首选的 “神兵利器”。
提示: 更多关于 JSON 的相关操作,另请参阅:Python 读取 JSON 与 Python 写入 JSON。
