如何在Python中筛选JSON数组,提取含非空source块的operation_no
用Python提取含非空source条目的数据
实现思路
遍历JSON数据中的L数组,筛选出source字段不为空的条目,再提取目标内容(比如operation_no)。
代码示例
import json # 示例JSON字符串(实际场景中可从文件/接口获取) json_content = ''' { "L": [ { "operation_no": 123456, "key1": "value1", "keys": { "no_seq": "1234", "external_key": null }, "key2": 10234, "territory": { "territory_no": 1 }, "key3": "value", "source": [] }, { "operation_no": 123458, "key1": "value3", "keys": { "no_seq": "1237", "external_key": null }, "key2": 10237, "territory": { "territory_no": 1 }, "key3": "value", "source": [ { "source1": "fhry4645fsgaa1", "source2": "123egst36535a1" }, { "source1": "fhry4645fsgaa2", "source2": "123egst36535a2" } ] } ] } ''' # 解析JSON为Python字典 data_dict = json.loads(json_content) # 筛选非空source的条目,提取operation_no target_operation_nos = [item['operation_no'] for item in data_dict['L'] if item['source']] # 输出结果 print(target_operation_nos) # 输出: [123458]
代码说明
- JSON解析:使用
json.loads()将JSON字符串转为Python字典;若从文件读取,替换为json.load(open('your_file.json', 'r'))。 - 筛选逻辑:利用Python的布尔特性,空列表
[]会被判定为False,非空列表为True,以此过滤条目。 - 提取目标:通过列表推导式快速提取符合条件的
operation_no,若需要完整条目,可改为[item for item in data_dict['L'] if item['source']]。
内容的提问来源于stack exchange,提问作者speedyrazor
相关产品推荐
相关产品推荐

