我有以下JSON数据:
[
{
"urls": [
"outlook.office.com",
"outlook.office365.com"
],
"ips": [
"192.168.0.0/16"
]
},
{
"urls": [
"*.mail.protection.outlook.com"
],
"ips": [
"172.16.0.0/12"
]
},
{
"urls": [
"r1.res.office365.com",
"r3.res.office365.com",
"r4.res.office365.com",
"xsi.outlook.com"
],
}
]
我想提取与“ * .mail.protection.outlook.com” URL相关的所有IP地址。
我当前拥有的代码是:
import json
with open('ips.json') as i:
ip = json.load(i)
for urls in ip:
print(urls["ips"])
为每个对象打印“ ips”数组的所有成员,但是我只希望包含以下内容的对象中的数组:
[ { urls: [ "*.mail.protection.outlook.com" ] } ]
最好使用纯Python(没有非标准库)解决方案,以简化向AWS Lambda的部署
答案 0 :(得分:1)
简单的loop
语句。
import json
with open('demo.json') as i:
datas = json.load(i)
ips = []
search_url = "*.mail.protection.outlook.com"
for data in datas:
if 'urls' in data:
if search_url in data['urls']:
if 'ips' in data:
ips.extend(data['ips'])
print(ips)
输出
['172.16.0.0/12']