1. filter
- filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
- 用法:filter(function, iterable)
infoList= {
"Response": {
"RequestId": "9d268c8f-26c4-d41d-cdcd-4f46c581100a",
"Data": [
{
"Id": 1000001,
"ProjectCode": 110022,
"ProjectName": "易方达",
"Info":{
"card":13132123123,
"bank_name":"中国银行"
}
},
{
"Id": 1000002,
"ProjectId": 165519,
"ProjectName": "中证800医药",
"Info":{
"card":16455231231,
"bank_name":"工商银行"
}
},
{
"Id": 1000003,
"ProjectId": 516160,
"ProjectName": "南方中证新能源",
"Info":{
"card":16455231231,
"bank_name":"农业银行"
}
}
]
}
}
# 获取匹配该数据的列表(若不匹配返回空列表) > [{‘Id‘: 1000003, ‘ProjectId‘: 516160, ‘ProjectName‘: ‘南方中证新能源‘, ‘Info‘: {‘card‘: 16455231231, ‘bank_name‘: ‘农业银行‘}}]
result = list(filter(lambda x: x["ProjectName"] == "南方中证新能源", infoList["Response"]["Data"]))
print(result)
2. jsonpath
- jsonpath() 是一种信息抽取类库,用来解析多层嵌套的json数据,存在返回列表,不存在返回False
- 用法:jsonpath(dict_data,‘$..key_name‘); 其中:“$”表示最外层的{},“..”表示模糊匹配,当传入不存在的key_name时,程序会返回false
from jsonpath import jsonpath
# 1. 获取指定数据 > [‘易方达‘, ‘中证800医药‘, ‘南方中证新能源‘]
print(jsonpath(infoList, "$..ProjectName"))
# 2. 获取第一条"bank_name" > [‘易方达‘]
print(jsonpath(infoList, "$.Response.Data[0].ProjectName"))
# 3. 不存在返回 False
print(jsonpath(infoList, "$.Response.Total"))
python jsonpath 与 filter 提取信息