Python利用jmespath模块进行json数据处理

jmespath是python的第三方模块,是需要额外安装的。它在python原有的json数据处理上

做出了很大的贡献,至于效果接下来试试就知道了有多方便。

话不多说,我们直接进入正题…

既然是第三方的库,那肯定是要安装的。通过pip的方式先将jmespath库安装好…

pip install jmespath

将安装好的模块导入到代码块中…

import jmespath as jp

jmespath中有一个很重要、很方便的函数那就是search,不管你的json数据有多么变态,它都能给你找到。写出这个框架的大佬也是费心了…

我先准备了一个最简单的json数据结构的数据,数据层级为1。

json_data1 = {"name": "Python 集中营", "age": "10年"}

res = jp.search("name", json_data1)

print(res)

# Python 集中营

如果是多级的json数据,可以使用key1.key2.key3的方式来获取value值。

json_data2 = {"names": {"name": "Python 集中营", "age": "5年"}}

res = jp.search("names.name", json_data2)

print(res)

# Python 集中营

既然是针对json数据的处理,那肯定也是支持数组形式的查找的。对于json数据的数组形式的查找,主要是通过数组下标的方式来获取数据value值的。

json_data3 = ['Python 集中营', 'Sir.wang']

res = jp.search("[0]", json_data3)

print(res)

# Python 集中营

若是数组和字典的形式结合组成的json数据,也可以组合使用查找方式。比如:有如下的json数据…

json_data4 = {
    "key1": {"key1_1": "value1_1"},
    "key2": {"key2_1": ["a", "b", "c"]}
}

面对稍微复杂一点的json数据可以先定义好表达式的字符串,最后再使用search函数进行数据查找。比如:需要在json数据中找到如下的数组…

# ["a", "b", "c"]

exp = "key2.key2_1[0]"

res = jp.search(exp, json_data4)

print("数组中的数值:", res)

# 数组中的数值:a

那么,如何在json数据中使用切片的方式来找到需要的json数据,当然也是支持的…

json_data5 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

exp = "[0:7]"

res = jp.search(exp, json_data5)

print("切片数据结果", res)

# 切片数据结果 [0, 1, 2, 3, 4, 5, 6]

还有一种查找方式,是通过*符号通配符的方式,主要是用在外层数据为数组的json数据中,比如有如下的数据…

json_data6 = {
    "data": [
        {"name": "Python 集中营", "age": "5年"},
        {"name": "Sir.wang", "age": "28"},
        {"dr": "nrg"}
    ]
}

这种数据形式的话,表达式可以这样写。先找到data作为键,这个时候是用data[*]就可以找到data下面的所有数据,在通过下一个层级的键进行匹配。

exp = "data[*].name"

res = jp.search(exp,json_data6)

print(res)

# ['Python 集中营', 'Sir.wang']

若是想匹配到的键是dr,则将exp表达式修改成下面这样就可以找到了…

exp = "data[*].dr"

# 查找的结果则是下面这样的...

# ['nrg']

到此这篇关于Python利用jmespath模块进行json数据处理的文章就介绍到这了,更多相关Python json数据处理内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)

    简介 有些 post 的请求参数是 json 格式的,这个前面发送post 请求里面提到过,需要导入 json模块处理.现在企业公司一般常见的接口因为json数据容易处理,所以绝大多数返回数据也是 json 格式的,我们在做判断时候,往往只需要提取其中 几个关键的参数就行,这时候我们就需要 json 来解析返回的数据了.首先来说一下笔者为何要单独写这么一篇,原因是:python 里面 bool 值是 True 和 False,json 里面 bool 值是 true和 false,并且区分大小写

  • python处理json数据中的中文

    python中自带了处理python的模块,使用时候直接import json即可. 使用loads方法即可将json字符串转换成python对象,对应关系如下: JSON     Python object   dict array    list string   unicode number   (int) int, long number   (real) float true     True false    False null     None 但在使用json模块的时候需要注意

  • Python3中对json格式数据的分析处理

    前言 数据已经过修改,以防泄密,请放心阅读 今天同事提出一个需求,要求我修改之前的某脚本,该脚本的作用是获取zabbix监控系统返回的json数据,我的任务是使其变成易读的文本,如何获取数据不在此赘述,只描述如何对json数据进行处理 一.如何将json数据转换成python内部的数据类型 展示一下zabbix的接口返回的json数据(数据经过dumps编码了,因为原数据为str类型,只有一行,不易读) js = json.dumps(get_alert(), indent=4, ensure_

  • 使用 Python 处理 JSON 格式的数据

    如果你不希望从头开始创造一种数据格式来存放数据,JSON 是一个很好的选择.如果你对 Python 有所了解,就更加事半功倍了.下面就来介绍一下如何使用 Python 处理 JSON 数据. JSON的全称是 JavaScript 对象表示法 JavaScript Object Notation .这是一种以键值对的形式存储数据的格式,并且很容易解析,因而成为了一种被广泛使用的数据格式.另外,不要因为 JSON 名称而望文生义,JSON 并不仅仅在 JavaScript 中使用,它也可以在其它语

  • Python处理JSON数据并生成条形图

    一.JSON 数据准备 首先准备一份 JSON 数据,这份数据共有 3560 条内容,每条内容结构如下: 本示例主要是以 tz(timezone 时区) 这一字段的值,分析这份数据里时区的分布情况. 二.将 JSON 数据转换成 Python 字典 代码如下: 三.统计 tz 值分布情况,以"时区:总数"的形式生成统计结果 要想达到这一目的,需要先将 records 转换成 DataFrame,DataFrame 是 Pandas 里最重要的数据结构,它可以将数据以表格的形式表示:然后

  • Python利用jmespath模块进行json数据处理

    jmespath是python的第三方模块,是需要额外安装的.它在python原有的json数据处理上 做出了很大的贡献,至于效果接下来试试就知道了有多方便. 话不多说,我们直接进入正题… 既然是第三方的库,那肯定是要安装的.通过pip的方式先将jmespath库安装好… pip install jmespath 将安装好的模块导入到代码块中… import jmespath as jp jmespath中有一个很重要.很方便的函数那就是search,不管你的json数据有多么变态,它都能给你找

  • Python利用socket模块开发简单的端口扫描工具的实现

    一.socket 1.简介 Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯. socket的工作流程 socket 采用C/S 模式,分为服务端和客户端 服务端数据处理流程 创建socket -> 绑定到地址和端口 -> 等待连接 -> 开始通信-> 关闭连接 客户端数据处理流程 创建socket -> 等待连接 -> 开始通信-> 关闭连接 客

  • Python利用itchat模块定时给朋友发送微信信息

    目录 功能 数据来源 实现效果 代码说明 目录结构 核心代码 项目运行 安装依赖 参数配置 功能 定时给女朋友发送每日天气.提醒.每日一句. 数据来源 每日一句和上面的大佬一样也是来自ONE·一个 天气信息来自SOJSON 实现效果 代码说明 目录结构 city_dict.py :城市对应编码字典 config.yaml :设置定时时间,女友微信名称等参数 GFWeather.py:核心代码 requirements.txt:需要安装的库 run.py:项目运行类 核心代码 GFWeather.

  • Python的标准模块包json详解

    引言 对于做web开发的人来说,json文本必须要熟知与熟练使用的.大部分网站的API接口调用返回的数据,就是json格式的.如果看json对象所包含的内容,相信对熟悉Python的人开说,很快就能把json的数据类型跟Python的数据类型对应上. 那么,Python的标准模块包json,又有什么用呢?为什么要用去转json的格式为Python对应的格式呢?为什么就不能拿json格式的数据直接用呢?不是其类型几乎一样且对应的么? 其实,只是看仔细其中的数据结构之后,还是可以看出json原格式与

  • python 利用pywifi模块实现连接网络破解wifi密码实时监控网络

    python 利用pywifi模块实现连接网络破解wifi密码实时监控网络,具体内容如下: import pywifi from pywifi import * import time def CrackWifi(password): wifi = pywifi.PyWiFi() iface = wifi.interfaces()[0] # 取一个无限网卡 # 是否成功的标志 isok = True if(iface.status()!=const.IFACE_CONNECTED): profi

  • Python利用requests模块下载图片实例代码

    本文主要介绍的是关于Python利用requests模块下载图片的相关,下面话不多说了,来一起看看详细的介绍吧 MySQL中事先保存好爬取到的图片链接地址. 然后使用多线程把图片下载到本地. 示例代码: # coding: utf-8 import MySQLdb import requests import os import re from threading import Thread import datetime header = {'User-Agent': 'Mozilla/5.0

  • Python使用jsonpath-rw模块处理Json对象操作示例

    本文实例讲述了Python使用jsonpath-rw模块处理Json对象操作.分享给大家供大家参考,具体如下: 这两天在写一个爬虫,需要从网站返回的json数据提取一些有用的数据. 向url发起请求,返回的是response,在python3中,response.content是二进制bytes类型的,需要用decode()转成unicode的str类型 #如果用的requests发的请求 import json response = requests.get(url,headers=self.

  • python 利用turtle模块画出没有角的方格

    意思就是画四条直线,四条直线都不能相交即可. #!/usr/bin/python #coding: UTF-8 import turtle import time t = turtle.Pen() for x in range(4): t.up() t.forward(25) t.down() t.forward(100) t.up() t.forward(25) t.down() t.left(90) time.sleep(3) 执行结果见下图 以上这篇python 利用turtle模块画出没

  • python利用datetime模块计算程序运行时间问题

    **问题描述:**有如下程序输出日志,计算程序运行时间,显示花费623分钟? start time:2019-03-15 19:45:31.237894 end time:2019-03-17 06:09:01.415541 It cost 623 minutes 相关代码: import datetime s = '2019-03-15 19:45:31' s_datetime = datetime.datetime.strptime(s, '%Y-%m-%d %H:%M:%S') e = '

  • python利用os模块编写文件复制功能——copy()函数用法

    我就废话不多说了,大家还是直接看代码吧~ #文件复制 import os src_path=r'E:\Pycharm\python100题\代码' target_path=r'E:\Pycharm\python100题\123' #封装成函数 def copy_function(src,target): if os.path.isdir(src) and os.path.isdir(target): filelist=os.listdir(src) for file in filelist: p

随机推荐