Python从0到100(三十八):json字符串的数据提取
【摘要】 前言: 零基础学Python:Python从0到100最新最全教程。 想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、 计算机视觉、机器学习、神经网络以及人工智能相关知识,成为学习学习和学业的先行者!欢迎大家订阅专栏:零基础学Python:Python从0...
前言:
零基础学Python:Python从0到100最新最全教程。 想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、 计算机视觉、机器学习、神经网络以及人工智能相关知识,成为学习学习和学业的先行者!
欢迎大家订阅专栏:零基础学Python:Python从0到100最新最全教程!
JSON的数据提取
1.学习目标
- 掌握JSON相关的方法(
load
,loads
,dump
,dumps
) - 了解JSONPath的使用(提取JSON中的数据)
2 复习什么是JSON
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。适用于进行数据交互的场景,比如网站前台与后台之间的数据交互。
3 JSON模块中方法的学习
json.load()
: 从文件对象中读取JSON数据。json.loads()
: 从字符串中读取JSON数据。json.dump()
: 将Python对象写入文件对象,格式为JSON。json.dumps()
: 将Python对象转换为JSON格式的字符串。
4 JSONPath模块的学习
4.1 JSONPath介绍
JSONPath 是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种语言实现版本,包括:Javascript, Python,PHP 和 Java。
4.2 JsonPath 对于 JSON 来说,相当于 XPath 对于 XML。
安装方法:pip install jsonpath
官方文档:[JSONPath - XPath for JSON](http://goessner.net/articles/JsonPath)
4.3 JsonPath语法:
- 使用点符号
.
来表示当前对象。 - 使用方括号
[]
来表示数组索引或对象属性。 - 使用星号
*
作为通配符匹配所有成员名或数组索引。 - 使用
..
表示递归下降,从当前位置开始,遍历所有子元素。 - 使用
[start:end:step]
表示数组切片操作。
4.4 语法使用示例
book_dict = {
"store": {
"book": [
{ "category": "reference",
"author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
},
# ... 其他书籍信息
],
"bicycle": {
"color": "red",
"price": 19.95
}
}
}
from jsonpath import jsonpath
print(jsonpath(book_dict, '$..author')) # 返回所有作者的列表
4.5 JSONPath表达式示例表
JSONPath | 结果 | 说明 |
---|---|---|
$.store.book[*].author |
store 中的所有book 的作者 |
使用通配符* 匹配所有book 元素 |
$..author |
所有作者 | 使用.. 递归匹配所有author |
$.store.* |
store 下的所有元素 |
使用点符号. 匹配所有直接子元素 |
$.store..price |
store 中的所有内容的价格 |
使用双点.. 匹配所有嵌套价格 |
$..book[2] |
第三本书 | 数组索引从0开始,因此是第三本书 |
$..book[(@.length-1)] | $..book[-1:] |
最后一本书 | 使用脚本表达式或负索引 |
$..book[0,1] | $..book[:2] |
前两本书 | 使用数组切片或索引列表 |
$..book[?(@.isbn)] |
有ISBN的所有书 | 使用过滤器表达式匹配有ISBN属性的书 |
$..book[?(@.price<10)] |
价格小于10的所有书 | 使用过滤器表达式匹配价格 |
$..* |
获取所有数据 | 使用通配符匹配所有元素 |
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)