我正在解析auth.log中的所有IP地址。我有以下脚本来解析IP地址,它似乎工作正常(或至少它捕获IP地址)。
import re
authLog = open("auth.log", "rb")
string = authLog.read()
ipAddress = re.findall(r"[0-9]+(?:\.[0-9]+){3}", string)
print ipAddress
我想要做的是将IP地址写入文本文件,每个IP都有自己的行。即
192.168.1.1
192.168.1.1
192.168.1.1
192.168.1.1
etc...
这意味着我需要摆脱python和逗号的引号。现在它只是以这种格式打印IP地址:' 192.168.1.1',' 192.168.1.1',' 192.168.1.1',&# 39; 192.168.1.1'等...
执行此操作的最佳方法是什么?一如既往,您的帮助会非常受欢迎。
答案 0 :(得分:7)
首先,我建议为ipAddress
选择一个不同的名称。 findall
返回字符串列表,列表名称传统上是复数。 ipAddresses
怎么样?
您可以使用join
将字符串列表组合到单个分隔的字符串中。您可以使用换行符作为分隔符。例如:
with open("output.txt", "w") as file:
file.write("\n".join(ipAddresses))
答案 1 :(得分:2)
我不知道为什么会有这么多仇敌和巨魔投票给正常的问题。我赞成你抵消。
在python中做换行通常你想使用
\n
然而,最好的方法是使用' for'声明
for val in ipAddress:
print(val + '\n')
这将在自己的行上打印每个ipAddress