jq处理返回来json_4个小窍门,让你在Python中高效使用JSON

全文共1990字,预计学习时长5分钟

0e48efffc67662f44bab976e87ac7eb1.png

图源:unsplash

字典和列表是 Python的两种数据类型,也是用来处理JSON的完美工具。本文将主要分享以下内容:

· 如何载入、编写JSON?

· 如何在命令行上优化、校验JSON?

· 如何通过使用JMESPath对JSON文档执行高级查询?

1. JSON解码

Python自带一个功能强大、内容丰富的JSON库。可通过以下方式导入:

import json

解码JSON字符串很简单,直接输入 json.loads(…) 即可。它可以转换成:

· 字典对象

· 列表数组

· 识别布尔值、整数、浮点数和字符串,在Python中进行正确转换。

· 任何 null 都将被转换为Python的None类型。

以下为json.loads 的一个实例:

>>> import json>>> jsonstring = '{"name": "erik","age": 38, "married": true}'>>> json.loads(jsonstring){'name': 'erik', 'age': 38, 'married': True}

2.JSON编码

编码JSON也很简单。使用json.dumps(…) 把由字典、列表和其他本机类型组成的Python对象转换为字符串:

>>> myjson = {'name': 'erik', 'age': 38, 'married': True}>>> json.dumps(myjson)'{"name": "erik", "age": 38, "married":true}'

这其实是一个完全相同的文档,只是被转换成了字符串。所以,要想让JSON文档更易读,可使用缩进选项:

>>> print(json.dumps(myjson, indent=2)){  "name": "erik",  "age": 38,  "married": true}

3. 命令行用法

JSON库也可从命令行使用,以校验、优化JSON:

$ echo "{ "name": "Monty", "age":45 }" | python3 -m json.tool{    "name": "Monty",    "age": 45}

如果你的电脑系统是Mac或Linux,并且能够安装JSON库的话,那么你也可以研究一下jq 命令行工具。它除了有便于记忆,可以润色代码等优点外,还有许多其他特点。

ff95c76290ad297475841fd215eda1ae.png

jq将在默认情况下优化JSON

4. 使用JMESPath搜索JSON

ca73e5ffd287842e8ac3ef61fbb16fba.png

JMESPath是一种JSON查询语言。它能够让你轻松地从JSON文档中获取所需数据。如果你用过JSON,就会觉得获取嵌套值并不难。

例:doc["person"]["age"]将在一个如下所示的文档中获取age的嵌套值:

{  "persons": {    "name": "erik",    "age": "38"  }}

但如果是像下面这样的文档,该如何从这一组人名中提取所有年龄字段呢?

{  "persons": [    { "name": "erik","age": 38 },    { "name": "john","age": 45 },    { "name": "rob","age": 14 }  ]}

我们可以简单地写一套关于这些人名的重复指令。虽然很容易,但重复指令运行较慢,会使你的代码复杂化。所以,这就该派JMESPath上场了!

用JMESPath表达式编写代码:

persons[*].age

它将返回一个包含所有年龄的数组:[38, 45, 14].

假设要筛选列表,只获取名为“erik”的人的年龄。你可以编写一个筛选程序来执行此操作:

persons[?name=='erik'].age

看,多么流畅!

因为JMESPath不属于Python标准库,所以你需要一起安装pip或pipenv。例如,在虚拟环境中使用pip:

$ pip3 install jmespath$ python3Python 3.8.2 (default, Jul 16 2020, 14:00:26)>>> import jmespath>>> j = { "people": [{ "name": "erik","age": 38 }] }>>> jmespath.search("people[*].age", j)[38]>>>
688d31db75f6dc7b17fa0544ec3ae752.png

现在就去试一试吧!请严格按照交互式教程操作,同时也不要忘了在JMESPath站点上查看示例哦!

01cf4025cf11eb3c8bafcfe02c29a5bf.png

留言点赞关注

我们一起分享AI学习与发展的干货

如转载,请后台留言,遵守转载规范

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/498461.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

谷歌、亚马逊、微软、IBM…这些巨头都已如何通过AI赚到钱了?

来源: 钛媒体 概要:巨头们各自所持有的AI技术里隐藏的商机:这些技术不仅能完善自家的产品,还能作为一种增值服务卖给企业级用户。 巨头们各自所持有的AI技术里隐藏的商机:这些技术不仅能完善自家的产品,还能…

ros自己写避障算法_slam导航避障算法,让无人机自主避障教学研究迈向更高处...

随着消费级无人机技术的不断成熟,不断完善的自动避障系统可以极大的减少因操作失误而带来的各项损失,目前避障能力正逐渐成为了无人机自动化或智能化的关键点所在。而根据无人机避障技术的原理和发展趋势,可以将无人机避障技术分为三重阶段:即感知障碍物阶段、绕过障…

库克:和App Store一样,AR技术必将改变世界

作者:李秀琴 概要:日前,苹果公司CEO蒂姆库克(Tim Cook)接受了英国《独立报》的专访,详谈了他对AR(增强现实)即将改变人类生活的看法,以及为何他会认为世界已经在慢慢变好…

机器人产业发展情况

来源: 战略前沿技术 全球机器人产业发展现状 一、机器人概述 1.机器人概念 采用国际机器人联合会对机器人的概念,即:机器人就是一种半自主或全自主工作的机器,能完成有益于人类的工作。 2.机器人分类 机器人包括工业机器人和服务机…

智能传感器深度报告:未来机器感官的百亿美元市场【附下载】

来源:智东西内参 概要:2019年,国内智能传感器市场规模预计将达到137亿美元,本土化率将从2015年的13%提升到27%。 2019年,国内智能传感器市场规模预计将达到137亿美元,本土化率将从2015年的13%提升到27%。 …

科学数字_七年级数学上册:科学记数法、有效数字记住这点中考分可定拿得到...

科学记数法 有效数字【知识导航】定义:把一个大于10的数表示成a的形式,(其中1≤a<10,n是正整数),此种记法叫做科学记数法。有效数字从一个数的左边第一个非0数起,到末位数字止。所有数字都是这个数的有效数…

简评亚洲人工智能发展现状:机遇与挑战并存

来源:36氪 概要:人工智能将作为一种基础性的力量,对我们的生活以及生活方式带来极大的改变,甚至是颠覆。 人工智能将作为一种基础性的力量,对我们的生活以及生活方式带来极大的改变,甚至是颠覆。 编者按&am…

以人工智能的卖点,华为携Mate 10向苹果发起新一轮攻势

华为于10月16日在德国慕尼黑发布了Mate 10系列手机。 Mate 10系列分为Mate 10、Mate 10 Pro和保时捷设计版,都搭载自家的麒麟970处理器。 来源:腾讯科技、PingWest品玩 Mate 10与Mate 10 Pro的主要区别在于屏幕和指纹识别。 Mate 10采用5.9英寸2560 x 14…

英国再推人工智能报告: 四方面发力打造AI强国

来源:腾讯研究院 概要:放眼全球的人工智能领域,美中英是在此领域表现最为突出的三个国家。英国一直是人工智能的研究学术重阵。 导读 放眼全球的人工智能领域,美中英是在此领域表现最为突出的三个国家。英国一直是人工智能的研究学…

手机h5可以用ifreme_折叠照片特效,用手机修图软件就可以实现

前两天有人问下面这种特效是怎么做的:大健看这种折叠照片要发现其中的规律:一是折叠度为90,每一张折叠照片的角度都是;二是对角线平分两张素材的角度为45。所以我们在后期制作这种折叠照片时一定要考虑好这两个条件,不…

“技术崇拜”与“技术恐惧”都会阻碍 AI 创新,“技术节制”才是正道

来源:36氪 概要:我们需要的是一种能够理解我们不断变化的想法的工具,而不是一个一直试图去模仿我们习惯的工具。 我们需要的是一种能够理解我们不断变化的想法的工具,而不是一个一直试图去模仿我们习惯的工具。 随着我们制造的机…

mysql 本地连接_mysql开启远程连接及本地连接

问题描述在本机windows上连接linux服务器上的mysql报错:hostXXX is not allowed to connect to this mysql server。这个错误是由于mysql server没有开启远程连接权限,所以本机连接不上远程的mysql。解决方法开启mysql 远程连接权限一、开启远程连接首先…

人机智能融合--人工智能的未来发展方向

来源:科学网 概要:在经历了三次起伏(即上世纪70年代后期对数学定理证明非万能的清醒、90年代后期对专家系统与五代机的失望、2006年深度学习掀起了新一轮的浪潮),人们狂热的希望逐渐踏实了很多,目光和注意力…

mysql先排序再分组筛选_mysql 怎样先排序再分组

权游游牧族:众所周知!一句SqL语句不能先排序再分组。所以这里给出几个案例--表结构--create table shop (id int (10) PRIMARY KEY,shop_name varchar (100),item_name varchar (100),price int (10));insert into shop (id, shop_name, item_name,price…

composer 路径_深入学习Composer原理(三)

本系列第三篇文章,一起了解下PSR规范中的PSR4和PSR0规范首先恭喜大家,包括我自己,坚持到了现在。这篇文章之后,Composer的基础原理就清晰明了咯。也就是说,Composer所利用的正是spl_autoload_register()和PSR4规范&…

科普丨深度学习 vs 概率图模型 vs 逻辑学

来源:人工智能爱好者俱乐部 概要:许多早期的人工智能工作都是关注逻辑、自动定理证明和操纵各种符号。John McCarthy于1959年写的那篇开创性论文取名为《常识编程》也是顺势而为。 今天,我们一起来回顾过去50年人工智能(AI)领域形成的三大范式…

浅析未来大数据的发展趋势

来源:36大数据 概要:随着我国进入大数据时代,很多人对于大数据的发展趋势还处于懵懂的状态,充分提升大数据的应用对于我国各个行业,都会有非常重要和有效的指导性作用。 随着我国进入大数据时代,很多人对于…

微软 CEO 纳德拉访谈:人工智能的大方向与未来是什么?

来源:36氪 概要:我们都对科技的发展抱有乐观的态度,我们坚信,人工智能带来的挑战是让我们和社会定义什么是真正的人类。未来将会是一个人工智能强化和增强人类能力的世界,而不是让人类变得更加无用。 人工智能的未来到…

不用恐惧AI的高速发展,论击败阿法狗(零)最简单的方法

作者:刘锋 计算机博士,互联网进化论作者 10月19日凌晨,在国际学术期刊《自然》(Nature)上发表的一篇研究论文中,谷歌下属公司Deepmind报告新版程序AlphaGo Zero:从空白状态学起,在无…

神经网络中的「注意力」是什么?怎么用?

来源:转载自公众号「雷克世界」微信号:ROBO_AI 编译:嗯~阿童木呀、多啦A亮 概要:神经网络中的注意力机制(Attention mechanisms),也被称为“神经注意力”或“注意力”,最近吸引了广泛…