如何逐行读取文件的特定长度并使用python程序将其写入列表

时间:2013-11-07 06:15:32

标签: python file list

  

这是我的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“] ....等。现在问题是,对于从10.0.0.1到10.0.0.9的IP值,我们可以将其完全存储在IPS中10.0.0.1到10.0.0.9.But之后,而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范围内的ip地址到10.0.0.9之后,在2到11之间的字母,即lin [2:11],用于ip地址10.0.0.10,10.0.0.11,10.0.0.12等。

1 个答案:

答案 0 :(得分: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