广告
返回顶部
首页 > 资讯 > 后端开发 > Python >怎么使用python提取JSON数据指定内容
  • 521
分享到

怎么使用python提取JSON数据指定内容

2023-07-02 16:07:42 521人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

本篇内容介绍了“怎么使用python提取JSON数据指定内容”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Python提取jsON数据指定内

本篇内容介绍了“怎么使用python提取JSON数据指定内容”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

Python提取jsON数据指定内容

假设我们要获取'pic_str'里的数据

JSON数据

{'err_no': 0, 'err_str': 'OK', 'pic_id': '1169213517976400008', 'pic_str': 'xoet', 'md5': 'ca9bc4fda521498d2b3aba5dbb4ee4ac'}

1、JSON数据为字符串类型

import json str = "{'err_no': 0, 'err_str': 'OK', 'pic_id': '1169213517976400008', 'pic_str': 'xoet', 'md5': 'ca9bc4fda521498d2b3aba5dbb4ee4ac'}"json_str = str.replace("'",'"')# json.loads() ,要求json串格式中必须的双引号!!转换为字典json_dict = json.loads(dict2)print(json_dict['pic_str'])>> xoet

2、JSON数据为字典类型

import json json_dict = {'err_no': 0,'err_str': 'OK', 'pic_id': '1169213517976400008', 'pic_str': 'xoet', 'md5': 'ca9bc4fda521498d2b3aba5dbb4ee4ac'}# 方法一print(json_dict['pic_str'])# 或者使用 print(json_dict.get('pic_str')) # 方法二:遍历for pic in json_dict['pic_str'}:    print(pic)

python提取复杂JSON的数据 

在越来越多的项目中,基本都用了 json 作为接口数据返回的格式。json 给我们的感觉就是通俗易懂,只是即使再复杂的结构也会比其他格式容易看。然而一旦在调试或者测试中需要用到提取某一部分字段数据进行解析并校验的话,就没那么容易了。这篇文章使用 python 简单地获取到复杂 json 数据中的字段信息。

例子

如果有一个接口返回的 json 信息如下:

{  "familyName": "thinker family",  "homeTown": "广东省",  "fORMed": 2016,  "secretBase": "Super city",  "active": true,  "familyMembers": [    {      "name": "Jobs",      "age": 35,      "secretIdentity": "1992238132345",      "powers": [        "Radiation resistance",        "Turning tiny",        "Radiation blast"      ]    },    {      "name": "James",      "age": 37,      "secretIdentity": "8839394098124",      "powers": [        "Million tonne punch",        "Damage resistance",        "Superhuman reflexes"      ]    }  ]}

这里就包含了对象,以及列表数据。对象中也包含列表数据。这应该是最基本的企业接口 json 格式了。

假如你要提取 json 中的 name 信息,最简单的方式就是

member = [ members.get('name') for members in data.get('familyMembers') ]

如果是要连续拿其他的信息,那么就需要换其他中获取方式,其实这种是比较麻烦的一种方法。

解决方法

extract_element_from_json(data, ["familyMembers", "name"])>> ['Jobs', 'James']

此函数根据 path 中指定的键嵌套到obj中的记录中以检索所需的信息。当遇到一个列表作为 path 中键的值时,此函数会拆分并以深度优先的方式继续嵌套在遇到的列表的每个元素上。这就是返回 ['Jobs', 'James'] 的方式;因为 familyMembers 的值是一个列表,所以嵌套在它的两个元素上被拆分,并且 name 的每个值都附加到输出列表中。

如果 obj 是单个字典/ json,则此函数返回包含所需信息的列表,如果 obj 是字典/ json 列表,则此函数返回包含所需信息的双重列表。

如果嵌套字典/ json 的相应级别缺少 path 的元素,则此函数返回 [None]。

完整代码如下: 

def extract_element_from_json(obj, path):    '''    输入关键字,就可以将关键字的值信息存放在列表中并输出    如果关键字是对象名,则返回的对象字典信息到列表中    如果关键字是列表名,则返回的列表信息到列表中(返回双重列表)    '''    def extract(obj, path, ind, arr):    '''    从一个嵌套的字典中提取一个元素,并返回到列表中。        params: obj - dict - 输入字典        params: path - list - 构成JSON路径的字符串列表        params: ind - int - 起始索引        params: arr - 列表 - 输出列表    '''        key = path[ind]        if ind + 1 < len(path):            if isinstance(obj, dict):                if key in obj.keys():                    extract(obj.get(key), path, ind + 1, arr)                else:                    arr.append(None)            elif isinstance(obj, list):                if not obj:                    arr.append(None)                else:                    for item in obj:                        extract(item, path, ind, arr)            else:                arr.append(None)        if ind + 1 == len(path):            if isinstance(obj, list):                if not obj:                    arr.append(None)                else:                    for item in obj:                        arr.append(item.get(key, None))            elif isinstance(obj, dict):                arr.append(obj.get(key, None))            else:                arr.append(None)        return arr    if isinstance(obj, dict):        return extract(obj, path, 0, [])    elif isinstance(obj, list):        outer_arr = []        for item in obj:            outer_arr.append(extract(item, path, 0, []))        return outer_arr

这段代码可以直接复制使用。

其中使用方法很简单如下:

extract_element_from_json(data, ["familyMembers", "name"])

api 提取元素

import requestsurl = "Http://ip-api.com/json"response = requests.request("GET", url)data = response.json()extract_element_from_json(data, ["status"])

就是这么简单地使用了。

应用场景

通过这样的方式可以在什么场景下使用呢?

  • 接口重构,需要校验接口中的部分字段数据

  • 接口新增字段,只针对新增的字段进行提取校验

  • 需要提取某一部分字段进行数据传递

“怎么使用python提取JSON数据指定内容”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: 怎么使用python提取JSON数据指定内容

本文链接: https://www.lsjlt.com/news/342840.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么使用python提取JSON数据指定内容
    本篇内容介绍了“怎么使用python提取JSON数据指定内容”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!python提取JSON数据指定内...
    99+
    2023-07-02
  • 使用python如何提取JSON数据指定内容
    目录如何提取JSON数据指定内容假设我们要获取'pic_str'里的数据1、JSON数据为字符串类型2、JSON数据为字典类型如何提取复杂JSON的数据 例...
    99+
    2022-11-11
  • python怎么提取字符串指定内容
    这篇文章主要介绍了python怎么提取字符串指定内容的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python怎么提取字符串指定内容文章都会有所收获,下面我们一起来看看吧。本文教程操作环境:windows7系统...
    99+
    2023-06-30
  • python怎么爬取网页内的指定内容
    要爬取网页内的指定内容,可以使用Python中的第三方库,如BeautifulSoup和Requests。首先,需要安装这两个库。使...
    99+
    2023-08-08
    python
  • python怎么提取指定行和列的数据
    要提取指定行和列的数据,你可以使用Python中的pandas库。首先,你需要导入pandas库:```pythonimport p...
    99+
    2023-09-11
    python
  • 教你怎么使用hadoop来提取文件中的指定内容
    目录一、需求二、步骤三、结果一、需求 把以下txt中含“baidu”字符串的链接输出到一个文件,否则输出到另外一个文件。 二、步骤 1.LogMapper.java pa...
    99+
    2022-11-12
  • 使用JavaScript怎么截取字符串指定内容
    使用JavaScript怎么截取字符串指定内容?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。JavaScript的特点1.JavaScript主要用来向HTML...
    99+
    2023-06-14
  • python怎么提取json数组里的数据
    在Python中提取JSON数组的数据可以使用`json`模块来解析JSON字符串,然后使用Python的数据访问方法来提取数组中的...
    99+
    2023-10-10
    python json
  • python 根据正则表达式提取指定的内容实例详解
    python 根据正则表达式提取指定的内容 正则表达式是极其强大的,利用正则表达式来提取想要的内容是很方便的事。 下面演示了在python里,通过正则表达式来提取符合要求的内容。 实例代码: i...
    99+
    2022-06-04
    详解 实例 内容
  • 怎么在python中获取字符串的指定内容
    这篇文章给大家介绍怎么在python中获取字符串的指定内容,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。python的五大特点是什么python的五大特点:1.简单易学,开发程序时,专注的是解决问题,而不是搞明白语言本...
    99+
    2023-06-14
  • 如何使用hadoop来提取文件中的指定内容
    这篇文章将为大家详细讲解有关如何使用hadoop来提取文件中的指定内容,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、需求把以下txt中含“baidu”字符串的链接输出到一个文件,否则输出到另外一个文件...
    99+
    2023-06-15
  • python怎么通过正则匹配指定字符开头与结束提取中间内容
    本文小编为大家详细介绍“python怎么通过正则匹配指定字符开头与结束提取中间内容”,内容详细,步骤清晰,细节处理妥当,希望这篇“python怎么通过正则匹配指定字符开头与结束提取中间内容”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入...
    99+
    2023-07-05
  • 聊聊利用python怎么读取mat文件内容(matlab数据)
    利用python怎么读取mat文件内容?下面本篇文章给大家介绍一下python读取matlab数据(.mat文件)的方法,希望对大家有所帮助!我们都知道,matlab是一个非常好用的矩阵计算分析软件,然额,matlab自带的绘图效果极为锯齿...
    99+
    2022-07-04
    python
  • 使用R语言怎么获取指定位置的数据
    这期内容当中小编将会给大家带来有关使用R语言怎么获取指定位置的数据,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。R语言-获取指定位置的数据R中采用数据对象+[ , ]的方式获取对应位置的数据,根据填入索引...
    99+
    2023-06-14
  • 怎么用python pandas库读取excel/csv中指定行或列数据
    本篇内容介绍了“怎么用python pandas库读取excel/csv中指定行或列数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所...
    99+
    2023-06-29
  • 使用json怎么获取数据库的信息
    使用json怎么获取数据库的信息?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。ajax发送请求到controller,controller响应一个json格式的数据给页面,...
    99+
    2023-06-08
  • 使用request怎么获取body中的json数据
    使用request怎么获取body中的json数据?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在request中可以获取到来自Http请求的body数据比如获取json格...
    99+
    2023-06-15
  • 怎么使用python爬取网站所有链接内容
    要使用Python爬取网站的所有链接内容,可以使用Python的requests库发送HTTP请求和BeautifulSoup库解析...
    99+
    2023-08-23
    python
  • 使用python怎么爬取数据
    使用python怎么爬取数据?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相比,P...
    99+
    2023-06-14
  • 怎么在LINUX中使用grep查询指定首尾文件内容
    本篇文章为大家展示了怎么在LINUX中使用grep查询指定首尾文件内容,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。打开LINUX,这里我们可以用UBUNTU操作系统。找到左边任务栏的TERMINA...
    99+
    2023-06-10
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作