Python文本文件中每行的有效IP

时间:2014-10-25 16:15:40

标签: python validation copy ip

我有一个文本文件,其中包含许多此格式的ips

Host : x.x.x.x , DNS : resolved dns , Location : USA
Host : x.x.x.x , DNS : resolved dns , Location : USA
Host : x.x.x.x , DNS : resolved dns , Location : USA

我希望在短语" Host:"之后使用VALID ips。这是该行中的第一个单词,并将其移动到文件ipclear.txt,在同一行中丢弃任何ip,只是在短语Host之后的有效ip。

2 个答案:

答案 0 :(得分:0)

f = open('inputfile.txt','r')
clearip = open('clearip.txt','w')

for line in f:
    ip = line.split(',')[0].split(':')[1].strip()
    clearip.write(ip+'\n')

f.close() # you can omit in most cases as the destructor will call if
clearip.close()

这将打开两个文件,一个是您正在读取的文件,另一个是您要写入的文件。然后它会逐行检查输入文件。对于每一行,我们将其拆分为, s,然后是: s,假设文件格式与您发布的格式相同,这将为我们留下IP地址,然后我们将其称为{ {1}}打开以删除任何尾随或前导空格。然后,我们将此IP写入输出文件,并添加换行符。在此之后我们关闭文本文件。

答案 1 :(得分:0)

Python的socket包具有将有效的点分八位字节IP转换为整数的函数。它被称为inet_aton,它是'互联网地址的简称号码。

try: [...] except:尝试将字符串转换为'主机:'和' ,DNS:'到一个IP整数,如果失败,它只是静静地移动到下一行。利用套接字比编写自己的正则表达式来解析所有可能的有效IP更容易。

import re
import socket

ipPattern = re.compile('Host : (.*) , DNS : .*')

outfile = open('ipclear.txt', 'w')

for line in open('iplog.txt').readlines():
    ipString = ipPattern.match(line).group(1)
    try:
        socket.inet_aton(ipString)
        outfile.write(ipString + '\n')
    except:
        pass

outfile.close()