2017-08-09 67 views
0

我有一個數據幀與數據幀中的IPv4和IPv6 CIDR IP地址範圍(這些可以拆分如果需要)。我希望能夠使用這些範圍並創建一個數據框,並使用該範圍內的每個地址創建一個數據框,以便我可以將其與另一個數據框結合以進行一些過濾。使用ipaddress和輸出到數據幀轉換CIDR IP地址範圍

使用ip地址包,以擴展列表功能是:

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'), 
...] 

我敢肯定有比採取這一輸出和regexing的IP地址更好的辦法。

回答

0
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.compressed) # 
ip_list