Python 字符串转换为字典

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 读取 JSONPython 写入 JSON

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号