我有以下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
简单的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']