问题描述
数据在某些 20x CIDR 中有空格,例如“136.226.68.0/23”与“136.226.68.0/23”,我似乎不知道如何忽略空格。
如果我在 https://ips.zscloud.net/cenr/jsonip 中加载 URL https://codebeautify.org/jsonviewer,您将看到 281 个条目中的 20 个条目的空间。
由于空间原因,此代码在第二个区域为 Atlanta II 136.226.68.0/23 之前可以正常工作:
import requests
import pprint
from ipaddress import IPv4Network
# Site to get data from in json format
url = 'https://ips.zscloud.net/cenr/jsonip'
# Get the data
response = requests.get(url)
data = response.json()
# Separate the data and print city and networks
regions = data['Geo_regions']
for name,region in regions.items():
for city_name,city_data in region.items():
for network_data in city_data:
print (city_name,network_data.get('cidr'))
net = IPv4Network(network_data.get('cidr'))
print (net.network_address,net.netmask,'\n')
它得到前 143 个条目就好了,然后得到以下错误:
.
.
Atlanta II 104.129.204.0/23
104.129.204.0 255.255.254.0
Atlanta II 136.226.68.0/23
Traceback (most recent call last):
File "/Users/sergiogomez/Downloads/zscaler-Json/get-cidrv4.py",line 18,in <module>
net = IPv4Network(network_data.get('cidr'))
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/ipaddress.py",line 1505,in __init__
self.netmask,self._prefixlen = self._make_netmask(mask)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/ipaddress.py",line 1170,in _make_netmask
prefixlen = cls._prefix_from_ip_string(arg)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/ipaddress.py",line 518,in _prefix_from_ip_string
cls._report_invalid_netmask(ip_str)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/ipaddress.py",line 474,in _report_invalid_netmask
raise NetmaskValueError(msg) from None
ipaddress.NetmaskValueError: '23 ' is not a valid netmask
注释掉最后两行,它会列出所有281个城市和网络
#net = IPv4Network(network_data.get('cidr'))
#print (net.network_address,'\n')
但需要将CIDR转换为子网
大家有什么建议吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)