ezread提供了一种极其简单的方法来获取JSON列表中的项。
ezread的Python项目详细描述
ezread提供了一种非常简单的方法来获取JSON列表中的项。在
特点
- 可笑的简单界面。在
- 已知的用于索引的JSON格式有助于理解我们要获取什么以及如何获取。在
- 轻松地从JSON列表中获取相关数据以进行进一步处理。在
- 本机支持嵌套索引。在
设置
使用pip
pip install ezread
直接从存储库
^{pr2}$文件
操作模式
- Strict:在这种模式下,如果找不到要读取的“index”或“key”,读取器将引发异常。在
- 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
- 项目
标签: