【发布时间】:2018-12-24 22:43:03
【问题描述】:
我有一个数据帧,其中包含 IPv4 和 IPv6 CIDR IP 地址范围(必要时可以拆分)。我希望采用这些范围并使用范围内的每个地址创建一个数据框,因此我可以将其与另一个数据框连接以进行一些过滤。
使用ipaddress包,展开列表的功能是:
a = ip.ip_network('103.21.244.0/22')
for x in a.hosts():
print(x)
这会生成一个仅包含此 IP 范围的列表。有谁知道如何输入一系列 CIDR 范围,这样我就不必执行上述 n 次?如果我用数据框的引用代替上面的 IP 地址,我会收到一个 ValueError,指出它似乎不是 IPv4 或 IPv6 网络。
第二个问题,作为 Python 新手,我需要做什么才能将这些扩展范围放入列表或数据框中?我试过这个:
a = ip.ip_network('103.21.244.0/22')
ip_list = [] #x for x in a.hosts()
for x in a.hosts():
ip_list.append(x)
ip_list
最终得到:
[IPv4Address('103.21.244.1'),
IPv4Address('103.21.244.2'),
IPv4Address('103.21.244.3'),
IPv4Address('103.21.244.4'),
IPv4Address('103.21.244.5'),
...]
我确信有比获取该输出和正则表达式 IP 地址更好的方法。
【问题讨论】:
标签: python python-3.x jupyter-notebook