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

2024-04-26 06:50:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文本文件,其中包括许多IP在这种格式

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:”之后获取有效的IP地址,这是行中的第一个单词,并将其移动到文件中ipclear.txt文件,丢弃同一行中的任何ip,只丢弃短语Host后面的有效ip。你知道吗


Tags: 文件iptxthostdns格式location单词
2条回答

Python的socket包有一个函数,可以将点八位字节的有效IP转换为整数。它被称为inet_aton,是“互联网地址到号码”的缩写。你知道吗

try: [...] except:尝试将“Host:”和“DNS:”之间的字符串转换为IP整数,如果失败,它会悄悄地转到下一行。利用socket比编写自己的regex更容易解析出所有可能的有效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()
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()

这将打开两个文件,一个是您正在读取的文件,另一个是您正在写入的文件。然后它将逐行遍历输入文件。对于每一行,我们在,处拆分它,然后在:处拆分它,假设文件的格式与您发布的相同,这将留给我们IP地址,然后我们调用strip()来删除任何尾随或前导空格。然后将这个IP写入输出文件,并添加换行符。之后我们关闭文本文件。你知道吗

相关问题 更多 >