我有一个文本文件,其中包含许多此格式的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。
答案 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()