Python从0到100(三十八):json字符串的数据提取

举报
是Dream呀 发表于 2024/07/18 13:20:04 2024/07/18
【摘要】 前言: 零基础学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.学习目标

  1. 掌握JSON相关的方法(load, loads, dump, dumps
  2. 了解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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。