qpython能使用json吗l_Python pyjsonq包_程序模块 - PyPI - Python中文网

py jsonq

py jsonq是一个简单、优雅的python包,可以查询任何类型的json数据。通过在json上提供类似orm的查询,这将使您的生活更轻松。

安装pip install pyjsonq

用法

只需在开始使用前导入软件包即可。

作为python包:frompyjsonqimportJsonQ

通过从文件导入json数据,您可以立即开始使用此包:JsonQ('data.json')

或JsonQ(data={"id":1,"name":"shaonty"})# must assign data if you want to pass data instead of file_path

您可以使用各种查询方法开始查询数据,例如where、or_where、where_in、where_not_in、where_start_with、where_ends_with、where_contains等等。此外,您还可以使用总和、计数、分组、排序、最大值、最小值等来聚合查询后的数据。

让我们看一个简单的例子:# sample Json datajson_object={products:[{id:1,city:'bsl',name:'iPhone',cat:1,price:80000.5},{id:2,city:null,name:'macbook pro',cat:1,price:150000},{id:3,city:'dhk',name:'Redmi 3S Prime',cat:2,price:12000},{id:4,city:'bsl',name:'macbook air',cat:2,price:110000}]};qe=JsonQ(file_path)res=qe.at('products').where('cat','=',2).get()print(res)"""This will print[{id: 3,city: 'dhk',name: 'Redmi 3S Prime',cat: 2,price: 12000},{id: 4,city: 'bsl',name: 'macbook air',cat: 2,price: 110000}]"""

假设我们想得到查询结果的价格总和。我们可以通过调用sum()方法而不是get():res=qe.at('products').where('cat','=',2).sum('price')print(res)"""It will print:122000"""

让我们探索完整的api,看看这个库还能为您带来什么魔力。

让我们?

API

下面的api示例基于这里给出的示例json数据。要更好地了解这些示例,请先查看json数据。每个api的详细示例也可以在这里找到。

API列表:

get()

此方法将执行查询并返回结果数据。在使用了一些查询方法之后,您需要最终调用它。详细信息可在其他API示例中找到。

来自文件(文件路径)

此方法是set json文件路径的替代方法。详细信息可在其他API示例中找到。

示例:

假设您有一个名为data.json的文件。您可以这样设置路径:qu=JsonQ().from_file('data.json').at('users').where('id','=',1).get()

位于(路径)路径--要开始查询的数据的路径层次结构。

默认情况下,查询将从给定的json数据的根开始。我如果要首先从要开始查询的位置移动到数据的嵌套路径层次结构,请使用此方法。跳过路径参数或指定'。作为参数也将从根数据开始查询。

示例:

假设您希望开始查询json数据的'users'属性的值。你可以这样做:qu=JsonQ(file_path).at('users').where('id','=',1).get()

如果您想深入层次结构,可以这样做:qe=JsonQ(file_path).at('users.5.visits').where('year','=',2011).get()

请参见此处的详细示例。

位置(键、运算符、值)键--数据的属性名。或者您可以在这里传递一个函数,在其中对多个查询进行分组。请参见示例中的详细信息

值--要匹配的值。它可以是一个int,string,bool甚至float——这取决于运算符

运算符--用于匹配的操作数。可以使用以下操作数:=:用于相等匹配

eq:与=相同

< L> >代码>!=:对于弱不相等匹配

neq:与相同!=

&gt;:检查数据中给定键的值是否大于值

gt:与&gt;相同

&lt;:检查数据中给定键的值是否小于值

lt:与&lt;相同

&gt;=:检查数据中给定的键的值是否大于或等于值

gte:与&gt;=相同

&lt;=:检查数据中给定的键的值是否小于或等于值

lte:与&lt;=相同

null:检查数据中给定键的值是否为null(value对于此运算符,可以省略where()中的参数value)

not null:检查数据中给定的键的值是否为notnull(value对于此运算符,可以省略where()中的参数value)

在中:检查数据中给定的键的值是否存在于给定的值中。值应该是一个简单的列表

not in:检查给定值val中是否不存在数据中给定键的值。val应该是一个简单的列表

starts with:检查数据中给定的键的值是否以给定的值开头(前缀为)。这只适用于字符串类型数据。

ends with:检查数据中给定的键的值是否以给定的值结尾(后缀为)。这只适用于字符串类型数据。

包含:与中的相同

示例:

假设您希望找到具有idof1的'用户'。你可以这样做:qu=JsonQ(file_path).at('users').where('id','=',1).get()

您可以在其中添加多个条件。它将在这些多个where条件之间通过和ing给出结果。pip install pyjsonq1

请参见此处的详细示例。

或_where(键、运算符、值)

或_where()的参数与where()的参数相同。where()与或_where()之间的唯一区别是:条件由或_where()方法将在其他条件下处理结果。

例如,如果要查找具有idof1或2的用户,可以这样做:pip install pyjsonq2

请参见此处的详细示例

输入位置(键,值)键--数据的属性名

值--它应该是一个列表

此方法的行为类似于where(key,'in',value)方法调用。

不在的位置(键,值)键--数据的属性名

值--它应该是一个列表

此方法的行为类似于where(key,'notin',value)方法调用。

其中为空(键)键--数据的属性名

此方法的行为类似于where(key,'=','none')方法调用。

其中不为空(键)键--数据的属性名

此方法的行为类似于where(key,'!=','无')方法调用。

以(键、值)开头的位置

键--数据的属性名

值--应该是字符串

此方法的行为类似于where(key,'startswith',value)方法调用。

以(键、值)结尾的位置

键--数据的属性名

值--应该是字符串

此方法的行为类似于where(key,'endswith',value)方法调用。

U包含的位置(键,VAL)键--数据的属性名

值--应该是字符串或列表

此方法的行为类似于where(key,'contains',val)方法调用。

总和(属性)属性--数据的属性名

示例:

假设您希望找到'products'的'price'之和。你可以这样做:pip install pyjsonq3

如果要聚合的数据是纯列表,则不需要传递"property"参数。

请参见此处的详细示例

count()

它将返回集合中的元素数。

示例:

假设您想查找'products'属性中有多少元素。你可以这样做:pip install pyjsonq4

请参见此处的详细示例

大小()

这是count()的别名方法

max(属性)属性--数据的属性名

示例:

假设您希望找到'products'的'price'的最大值。你可以这样做:pip install pyjsonq5

如果要查询的数据是纯数组,则不需要传递"property"参数。

请参见此处的详细示例

min(属性)属性--数据的属性名

示例:

假设您希望找到'products'中'price'的最小值。你可以这样做:pip install pyjsonq6

如果要查询的数据是纯数组,则不需要传递"property"参数。

请参见此处的详细示例

平均值(属性)属性--数据的属性名

示例:

假设你想找出t的平均价格他说"产品"。你可以这样做:pip install pyjsonq7

如果要查询的数据是纯数组,则不需要传递"property"参数。

请参见此处的详细示例

first()

它将返回集合的第一个元素。

示例:pip install pyjsonq8

请参见此处的详细示例

last()

它将返回集合的最后一个元素。

示例:pip install pyjsonq9

请参见此处的详细示例

nth(索引)索引--要返回的元素的索引。

它将返回集合的第n个(n从0开始)元素。如果给定的索引是一个正的值,它将从头返回第n个元素。如果给定的索引是一个负值,它将从末尾返回第n个元素。

示例:frompyjsonqimportJsonQ0

请参见此处的详细示例

分组依据(属性)属性--要按其对集合进行分组的属性。

示例:

假设您希望基于'location'属性对'users'数据进行分组。你可以这样做:frompyjsonqimportJsonQ1

请参见此处的详细示例

排序(顺序)顺序--如果跳过'order'属性,默认情况下,数据将按升序排序。您需要将'desc'作为'order'参数传递,以便按降序对数据进行排序。此外,您还可以在'order'参数中传递一个比较函数,以定义您自己的逻辑来对数据进行排序。

注意:此方法应用于普通数组。如果要对对象数组进行排序,则应使用稍后介绍的sortby()方法。

示例:

假设您想对'arr'数据进行排序。你可以这样做:frompyjsonqimportJsonQ2

请参见此处的详细示例

按(属性、顺序)排序

属性--您需要传递进行排序的属性名。

顺序--如果跳过'order'属性,默认情况下,数据将按升序排序。您需要将'desc'作为'order'参数传递,以便按降序对数据进行排序。此外,您还可以在'order'参数中传递一个比较函数,以定义您自己的逻辑来对数据进行排序。

注意:此方法应用于对象数组。如果要对普通数组进行排序,应使用前面介绍的sort()方法。

示例:

假设您想对'products'的'price'数据进行排序。你可以这样做:frompyjsonqimportJsonQ3

请参见此处的详细示例

重置(数据)数据--可以是json文件路径、json字符串或json对象。如果在data参数中没有传递数据,则jsonq对象实例将重置为以前初始化的数据。

在任何时候,您都可能希望将对象实例重置为完全不同的数据集,然后对其进行查询。在这种情况下,您可以使用这种方法。

请参见此处的详细示例

clone()

它将返回对象实例的完整克隆。

请参见此处的详细示例

块(大小)

在将特定大小的数组分块后,它将返回一个完整的新数组。

请参见此处的详细示例。

错误和问题

如果您遇到任何错误或问题,请随时打开

Github

学分

特别感谢nahid bin azhar为本套餐提供的灵感和指导。

其他平台

欢迎加入QQ群-->: 979659372

推荐PyPI第三方库

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

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

相关文章

虚拟跳线软件干什么用的_跳线的作用

跳线就是主板上的一个个小开关&#xff0c;(其它板卡上也有)&#xff0c;用来手动完成一些软件不能实现的操作&#xff0c;比如手动清空BIOS&#xff0c;超频等。如果主板上的跳线跳接得不正确&#xff0c;大多情况下都可能引起没有显示的故障。有些情况下&#xff0c;虽然也显…

启继承父位在什么时候_为什么少儿口才现在越来越受到家长们的重视

情商口才是个人素养、能力和智慧的一种综合反映&#xff0c;随着社会的发展&#xff0c;少年儿童的早期教育越来越受到家长的重视&#xff0c;特别是在培养孩子的语言表达能力中&#xff0c;更多的家长开始寻求各种方法来锻炼孩子的语言表达能力。源自于美国教育演说家卡耐基的…

x光肺部分割数据集_吴恩达发布了大型X光数据集,斯坦福AI诊断部分超越人类 | AAAI 2019...

数栗子 发自 凹非寺量子位 报道 | 公众号 QbitAI最近&#xff0c;吴恩达的斯坦福团队发布了一个叫做CheXpert的大型数据集&#xff0c;论文中选了AAAI 2019。它包含了224,316张标注好的胸部X光片&#xff0c;以及放射科医师为每张胸片写的病理报告。虽然&#xff0c;像从前NIH发…

python rpc webservice_关于RPC、HTTP、WebService的区别

关于 REST 介绍的文章已经很多了&#xff0c;这里只对 RPC 部分做一个介绍&#xff1a;RPC(远程过程调用)是什么简单的说&#xff0c;RPC就是从一台机器(客户端)上通过参数传递的方式调用另一台机器(服务器)上的一个函数或方法(可以统称为服务)并得到返回的结果。RPC 会隐藏底层…

python程序发布 ubuntu_将Windows项目发布到Ubuntu服务器详细教程(Windows编程,Ubuntu服务器做解释器)...

前期准备(1)专业版Pycharm(社区版没有deployment功能)&#xff0c;学生&#xff0c;教师可申请免费专业版&#xff0c;详情可看我的博客。(2)可通过SSH连接Ubuntu服务器&#xff0c;并且服务器安装了Python解释器。部署本地Pycharm项目到Ubuntu服务器1.点击Tools - Deployment …

nios 双核 烧录_nios程序烧写到epcs方法

折腾了好久&#xff0c;才把nios程序烧写到epcs的方法弄明白。开始先在网上搜了下&#xff0c;这方面资料很多&#xff0c;看了半天也没怎么弄明白&#xff0c;无奈&#xff0c;只好去找官方文档&#xff0c;看完后&#xff0c;只想说&#xff0c;官方文档确实给力。下面列出参…

access百度翻译 get_Asp.NET调用百度翻译

Asp.NET调用百度翻译&#xff0c;图示&#xff1a;HTML:OA翻译TextMode"MultiLine">源语言&#xff1a;自动检测中文英文日文目标语言&#xff1a;自动检测中文英文日文runat"server" Text"翻译" οnclick"Translate_Click" />C…

angular js 默认选中_AngularJS Select(选择框)

下拉框默认的值为 key-value 对中的 value &#xff0c;也可以用 as 来修改下拉框的值。也就是 x for (x, y) 相当于是 y as x for (x, y)。as 前面的为下拉框的值&#xff0c;后面的为下拉框显示的内容。​也可以不使用key-value 对中的 value 作为下拉框的值, 直接使用对象的…

【Qt之Quick模块】6. QML语法详解_1 基础语法与三种导入语句

前言 通过以上1-5文档的介绍&#xff0c;Quick与QML的概念及QML语法、类型、文件作用等已叙述个大概&#xff0c;接下来是对QML语法进行展开来说。 其实&#xff0c;学习任何一门语言或者做任何一件事情&#xff0c;并不用一开始就要求尽善尽美&#xff0c;做个无懈可击&…

datagrip将一个数据库中的数据_跨平台数据库管理神器DataGrip,用上就爱不释手...

原文链接&#xff1a;https://www.ffeeii.com/2041.htmlDataGrip是Jetbrains旗下众多优秀的效率生产工具之一。下载地址&#xff1a;https://www.jetbrains.com/datagrip/DataGrip是多引擎数据库环境&#xff0c;支持几乎常见的数据库类型&#xff1a;PostgreSQL、MySQL、Oracl…

栅格单元值的选取方法_ArcGIS中栅格数据重采样方法

2.用ArcGIS中的Resampling工具进行栅格重采样操作在ArcToolbox中依次找到Data Management Tools—>Raster—>RasterProcessing—>Resample工具&#xff0c;工具界面如下图所示&#xff1a;其中各参数含义如下&#xff1a;Input raster: 输入栅格数据集Output raster d…

城市轨道交通运营管理属于什么院系_专业介绍|城市轨道交通运营管理专业

原标题&#xff1a;专业介绍|城市轨道交通运营管理专业专业介绍丨城市轨道交通运营管理专业▲▲▲汽车工程系简介THE FIRST汽车工程系目前开设了汽车检测与维修技术、城市轨道交通运营管理、城市轨道交通通信信号技术等专业&#xff0c;在校学生700余人。汽车工程系突出复合型技…

idea 鼠标变量_IntelliJ IDEA鼠标悬停方法显示Java Doc

本问题已经有最佳答案&#xff0c;请猛点这里访问。我正在使用IntelliJ IDEA 9&#xff0c;是否可以配置IDEA&#xff0c;以便在将鼠标悬停在某个方法上时&#xff0c;IDEA会调出Javadoc(与CTRL Q相同)&#xff1f;看来&#xff0c;此功能可能最终会进入IntelliJ IDEA 12.1或1…

ad18敷铜为什么打的孔里面也有_PCB覆铜后放置大量过孔有什么作用?具体怎么放置?...

底层 顶层 共地下面摘抄的&#xff1a;过孔的多少不等同于决定某种实际的意义&#xff01;大家都知道在高频情况下&#xff0c;印刷电路板上的布线的分布电容会起作用&#xff0c;当长度大于噪声频率相应波长的1/20 时&#xff0c;就会产生天线效应&#xff0c;噪声就会通过…

python程序写完后点哪个运行快_让 Python 代码运行更快的最佳方式!

PyPy与CPythonPyPy是Python解释器CPython的直接替代品。CPython将Python编译为中间字节码然后由虚拟机解释&#xff0c;而PyPy使用实时(JIT)编译将Python代码转换为本地机器的汇编语言。根据正在执行的任务&#xff0c;性能提升可能会非常显着。平均而言&#xff0c;PyPy将Pyth…

idea下拉项目_推荐几款非常好用的IDEA插件(香)

每天进步一点点&#xff0c;坚持下去&#xff0c;你总是会不一样的。加油&#xff01;最近在整理Java常用的一些基础、ZooKeeper、Spring全家桶、源码、Dubbo、Elasticsearch、Redis、MySql、RabbitMQ、Kafka、Linux 、微服务等技术栈。持续更新中&#xff0c;欢迎点上面后端架…

python批处理代码_【原创源码】【python】python文本文件批处理

[Python] 纯文本查看 复制代码import osimport shutildef text_edit_vhd(filepath):with open(filepath,r) as file_head:content file_head.read()file_head.seek(0,0)file_head.write("protect begin \n" content)file_head.seek(0,2)file_head.write("\npr…

php 汉王云名片_汉王云-名片识别【最新版】_OCR_人工智能_API-云市场-阿里云

{"moduleinfo":{"advanList_count":[{"count_phone":4,"count":4}],"title":"云市场服务保障体系","mapList_count":[{"count_phone":4,"count":4}]},"advanList":[{&qu…

git 如何提取已提交的文件_git取两次提交的文件列表,包含目录信息

1.用git rev-list HEAD取得版本号列表&#xff1a;在SmartGit中看到的也是这样&#xff0c;验证了我们的猜想&#xff1a;取到两个版本号之后&#xff0c;用git diff命令&#xff1a;git diff [--options] ... [--] […​]这里的[-options]我们填的是--name-status&#xff0c;…

filco的pin码_一把强行帮你退烧的键盘 plum niz atom66静电容

一把强行帮你退烧的键盘 plum niz atom66静电容2019-09-10 10:37:578点赞17收藏14评论小编注&#xff1a;此篇文章来自即可瓜分10万金币&#xff0c;周边好礼达标就有&#xff0c;邀新任务奖励无上限&#xff0c;点击查看活动详情说起niz,正是个神奇的牌子,老板一个人就负责制作…