脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - Python利用jmespath模块进行json数据处理

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

2022-11-12 11:27Python 集中营 Python

jmespath是python的第三方模块,是需要额外安装的。它在python原有的json数据处理上做出了很大的贡献。本文将详细介绍如何利用jmespath实现json数据处理,需要的可以参考一下

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

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

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

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

?
1
pip install jmespath

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

?
1
import jmespath as jp

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

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

?
1
2
3
4
5
6
7
json_data1 = {"name": "Python 集中营", "age": "10年"}
 
res = jp.search("name", json_data1)
 
print(res)
 
# Python 集中营

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

?
1
2
3
4
5
6
7
json_data2 = {"names": {"name": "Python 集中营", "age": "5年"}}
 
res = jp.search("names.name", json_data2)
 
print(res)
 
# Python 集中营

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

?
1
2
3
4
5
6
7
json_data3 = ['Python 集中营', 'Sir.wang']
 
res = jp.search("[0]", json_data3)
 
print(res)
 
# Python 集中营

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

?
1
2
3
4
json_data4 = {
    "key1": {"key1_1": "value1_1"},
    "key2": {"key2_1": ["a", "b", "c"]}
}

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

?
1
2
3
4
5
6
7
8
9
# ["a", "b", "c"]
 
exp = "key2.key2_1[0]"
 
res = jp.search(exp, json_data4)
 
print("数组中的数值:", res)
 
# 数组中的数值:a

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

?
1
2
3
4
5
6
7
8
9
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数据中,比如有如下的数据…

?
1
2
3
4
5
6
7
json_data6 = {
    "data": [
        {"name": "Python 集中营", "age": "5年"},
        {"name": "Sir.wang", "age": "28"},
        {"dr": "nrg"}
    ]
}

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

?
1
2
3
4
5
6
7
exp = "data[*].name"
 
res = jp.search(exp,json_data6)
 
print(res)
 
# ['Python 集中营', 'Sir.wang']

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

?
1
2
3
4
5
exp = "data[*].dr"
 
# 查找的结果则是下面这样的...
 
# ['nrg']

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

原文链接:https://www.cnblogs.com/lwsbc/p/16046819.html

延伸 · 阅读

精彩推荐
  • Pythonpandas数据分组groupby()和统计函数agg()的使用

    pandas数据分组groupby()和统计函数agg()的使用

    这篇文章主要介绍了pandas数据分组groupby()和统计函数agg()的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需...

    蓝小白102414442021-09-14
  • Pythonpython图像处理基本操作总结(PIL库、Matplotlib及Numpy)

    python图像处理基本操作总结(PIL库、Matplotlib及Numpy)

    这篇文章主要给大家介绍了关于python图像处理基本操作的相关资料,主要利用的是PIL库、Matplotlib及Numpy等处理方法,需要的朋友可以参考下...

    全部梭哈一夜暴富12182021-11-26
  • PythonPython 3.8中实现functools.cached_property功能

    Python 3.8中实现functools.cached_property功能

    这篇文章主要介绍了Python 3.8中实现functools.cached_property功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...

    小明明S À DOMICILE11492021-06-30
  • Python详解Python自动化中这八大元素定位

    详解Python自动化中这八大元素定位

    今天给大家带来的是关于Python的相关知识,文章围绕着Python自动化中这八大元素定位展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下...

    巭孬嫑惹佳乐~3602021-12-02
  • PythonPython新手入门之解释器的安装

    Python新手入门之解释器的安装

    相信有很多小伙伴还不会安装Python解释器,今天特地整理了本篇文章,文章有非常详细的图文示例,对不会安装的小伙伴很有帮助,需要的朋友可以参考下...

    jks2124548372021-11-25
  • Python如何用Python画一些简单形状你知道吗

    如何用Python画一些简单形状你知道吗

    这篇文章主要介绍了用Python作图的一个简单实例,通过turtle模块实现作图,具有一定参考价值,需要的朋友可以了解下希望能给你带来帮助...

    我帅的是不是无可救药6692021-12-21
  • Python利用python实时刷新基金估值效果(摸鱼小工具)

    利用python实时刷新基金估值效果(摸鱼小工具)

    这篇文章主要介绍了利用python实时刷新基金估值(摸鱼小工具),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需...

    奔跑的鸡大腿9211732022-01-06
  • PythonPython破解excel进入密码的过程详解

    Python破解excel进入密码的过程详解

    这篇文章主要为大家介绍了如何利用Python破解excel进入密码,文中的示例代码讲解详细,对我们学习Python有一定帮助,感兴趣的可以动手试一试...

    用余生去守护11012022-10-20