-2

这是我的python程序

IPS=[]                                      # creating a list of IP addresses
w=sum(1 for line in open('my_dict.json'))   # w=total no. of lines in my_dict.json file 
ins=open("my_dict.json","r")
for lin in ins:          # from each line of my_dict.json,storing IP addresses in IPS   
    IPS.append(lin[2:10])
print IPS

在 my_dict.json 文件中,IP 地址存储为 ["10.0.0.1/8"] ["10.0.0.2/8"]....["10.0.0.10/8"] ["10.0.0.11/8"] ....etc..现在问题是,对于从 10.0.0.1 到 10.0.0.9 的 IP 值,我们可以将其准确地存储在 IPS 中,为 10.0.0.1 到 10.0.0.9。但在那之后,10.0.0.10,10.0。 0.11 等出现然后只有 10.0.0.1 写入 IPS 删除最后一个数字。因为我们只写 lin[2:10]。如果我们将其用作 lin[2:11],那么紧随其后的 '/' 值10.0.0.1 到 10.0.0.9 范围内的 IP 地址将被写入 IPS。那么我应该如何修改程序以接收从 2 到 10 的字母,即 lin[2:10] 用于 10.0.0.1 到 10.0 范围内的 IP 地址。 0.9 和之后的字母从 2 到 11 即 lin[2:11] 用于 IP 地址 10.0.0.10,10.0.0.11,10.0.0.12 等。

4

1 回答 1

0

我认为你可以使用正则表达式来提取IP部分,这样的代码

import re
p = re.compile('\d+?\.\d+?\.\d+?\.\d+?')
IPS=[]                                      # creating a list of IP addresses
w=sum(1 for line in open('my_dict.json'))   # w=total no. of lines in my_dict.json file 
ins=open("my_dict.json","r")
for lin in ins:          # from each line of my_dict.json,storing IP addresses in IPS  
    result = p.search(a)
    if result is not None
        IPS.append(result.group(0))
print IPS
于 2013-11-07T10:06:10.460 回答