我想从here检索Azure云的所有IP地址范围 json转换后的数据格式如下:
{
"AzurePublicIpAddresses": {
"Region": [
{
...
"IpRange": [
{
"_Subnet": "40.69.96.0/19"
},
{
"_Subnet": "40.86.192.0/18"
}
],
"_Name": "canadaeast"
},
{
"IpRange": [
{
"_Subnet": "13.71.160.0/19"
},
{
"_Subnet": "13.88.224.0/19"
},
{
"_Subnet": "40.85.192.0/18"
}
],
"_Name": "canadacentral"
}
],
"_xmlns:xsd": "http://www.w3.org/2001/XMLSchema",
"_xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance"
}
}
我无法访问IP范围?通过这个密码?你知道吗
with open('AZURE_IP.json') as data_file:
data = json.load(data_file)
list_IPCIDR = []
for i in data["AzurePublicIpAddresses"]:
for ii in i["Region"]:
for j in ii["IpRange"]:
list_IPCIDR.append(i["_Subnet"])
sys.stdout=open("test2.txt","w")
AzurePublicIpAddresses
是一个字典,所以:遍历键(在本例中是字符串)。也就是说,你正在尝试做“Region”[“Region”],这是字符串切片。请尝试以下操作:
data["AzurePublicIpAddresses"]
是dict
。直接在dict
上迭代只会得到该dict
的键。你知道吗所以呢
将打印
以某种顺序。你知道吗
您可以获得如下子网IP范围:
输出
这是因为
data["AzurePublicIpAddresses"]["Region"]
是一个dict
列表。每个dict
(临时绑定到名称ipr
)都包含一个与“IpRange”键关联的dict
列表,因此我们需要在内部循环中迭代这些列表,然后从这些内部dict
中提取子网字符串如果你喜欢,你可以用列表的方式来理解,但是我建议你把它分成几行,例如:
通常需要迭代
dict
的(键、值)对。您可以使用.items
方法(或python2中的.iteritems
)来实现这一点。例如相关问题 更多 >
编程相关推荐