ezread提供了一种极其简单的方法来获取JSON列表中的项。

ezread的Python项目详细描述


pypivpyvBuildCoverageLicence

ezread提供了一种非常简单的方法来获取JSON列表中的项。在

特点

  • 可笑的简单界面。在
  • 已知的用于索引的JSON格式有助于理解我们要获取什么以及如何获取。在
  • 轻松地从JSON列表中获取相关数据以进行进一步处理。在
  • 本机支持嵌套索引。在

设置

使用pip

pip install ezread

直接从存储库

^{pr2}$

文件

操作模式

  1. Strict:在这种模式下,如果找不到要读取的“index”或“key”,读取器将引发异常。在
  2. Non-Strict:在这种模式下,如果找不到要读取的“index”或“key”,读取器只返回None。在

API用法

fromezreadimportEzReader# For strict modereader=EzReader(<templatewithindex/keydetails>)reader.read(<jsontextwithlistofdictsorlists>)# For non strict modereader=EzReader(<templatewithindex/keydetails>,strict=False)reader.read(<jsontextwithlistofdictsorlists>)

模板指南

提供给EzReader的模板非常重要,因为它定义了需要读取的“index”或“key”。我们希望模板采用JSON格式,以提供某种结构。让我们举几个例子,了解如何指定要从JSON列表中读取的项。在

让我们看下面的JSON列表。在

[[1,2,3,4,5,6,7,8,9,10],[2,4,6,8,10,12,14,16,18,20],[3,6,9,12,15,18,21,24,27,30]]

如果要获取每个列表的第0个索引,模板将是什么样子?

[0]

返回的行将是

[1]
[2]
[3]

假设您要获取每个列表的第0、第2和第4个索引,模板将是什么样子?

[0,2,4]

返回的行将是

[1, 3, 5]
[2, 6, 10]
[3, 9, 15]

让我们用下面的JSON dict列表深入研究索引模板。在

[{"name":"Tom","age":30,"address":{"street":["124 Lincoln St","West Village"],"city":"New York","state":"NYC"}},{"name":"Dick","age":20,"address":{"street":["125 Lincoln St","West Village"],"city":"New York","state":"NYC"}},{"name":"Harry","age":40,"address":{"street":["50 Vinci Lane",""],"city":"San Fransisco","state":"CA"}}]

假设您要从列表中的每个dict中提取名称,模板会是什么样子?

["name"]

返回的行将是

["Tom"]
["Dick"]
["Harry"]

假设您要从列表中的每个dict中获取姓名和年龄,模板会是什么样子?

["name","age"]

返回的行将是

["Tom", 30]
["Dick", 20]
["Harry", 40]

假设您的查询有点复杂。你想获取一个人的姓名和城市,模板会是什么样子?

可以使用列表进行嵌套索引。在这里,您需要使用“address”,并从中获取“city”。您可以通过以下方式实现

["name",["address","city"]]

返回的行将是

["Tom", "New York"]
["Dick", "New York"]
["Harry", "San Fransisco"]

嵌套索引总是必须是字典键吗?

嵌套索引不能是列表中的字典键或(0-索引)索引。让我们获取每个联系人的“姓名”和“第一行地址”。在

["name",["address","street",0]]

返回的行将是

["Tom", "124 Lincoln St"]
["Dick", "125 Lincoln St"]
["Harry", "50 Vinci Lane"]

非严格查询模式

那么非严格模式的查询行为如何?

假设我们在前面的JSON示例中要求输入“name”和“homesty”。由于“homestry”不是JSON中的键,因此在strict模式下,它将失败,并出现“KeyError”。类似地,如果我们访问一个列表,并试图访问一个不存在的索引,它将以严格模式抛出“IndexOutOfBoundsError”。在

在非srict模式下的同一个查询将为它可以获取的键/索引返回正确的值,而对于其他查询则没有。在

["name","hometown"]

返回的行将是

["Tom", None]
["Dick", None]
["Harry", None]

命令行工具

这个库提供的命令行工具可以作为CSV文件输出获取所需的项。在

用法

# For help
ezread --help

# To use template string directly
ezread --template_str <index template string> <json file to read>

# To use template string from a file
ezread --template_file <file with index template string> <json file to read>

# By default it uses "," as the separator. If you want a different separator you can use --separator option.
# We use the strict mode by default. If you want to use non-strict mode use --nonstrict

贡献

错误报告和功能请求

请使用issue tracker报告错误或功能请求。在

开发

拉取请求是最受欢迎的。在

购买开发者一杯咖啡!

如果你发现这个实用工具有用,你可以用它给我买杯咖啡

Donate

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
当使用RequestDispatcher时,servlets Java最终没有被调用   java生成对具有可变参数数的方法的调用   java如何使用select子句中的参数化列映射iBATIS的查询?   java无法创建类型为org的插件。阿帕奇。登录中。log4j。果心阿佩德。元素RollingFile的RollingFileAppender   java当子实体和父实体之间存在OneTONE JPA关系时,是否可以将其与父实体一起持久化?   Android上的java Facebook集成fbconnect断开链接   获取方法调用方的java机制   从列表创建Oracle阵列时出现java问题   添加和检索元素的ArrayList的java ArrayList   在java中从字符串中删除无效的XML字符   java如何构建完整生成的maven模块   java如何准确地改变播放所有分辨率midi文件的速度?   shell javac:无效标志:/src/中位_度。ubuntu中的java   java使用从其他类的方法检索到的信息