在多个文本文件中查找IP地址,并使用regex将其替换为Python中的另一个字符串



我有如下多个文本文件:

我想读取所有的文本文件,并在每个文件中找到IP值,并将其替换为文本中可用的noresult字符串,并在python中保存每个文件。

将Text1

Id                = 0005      
Cause          = ERROR      
Code     = 307      
Event Time              = 2020-11-09 10:16:48      
Severity      = WARNING      
Severity Code = 5     
result = noresult
Id                = 0006      
Cause          = FAILURE      
Code     = 517      
Event Time              = 2020-11-09 10:19:47      
Severity      = MINOR      
Severity Code = 4 result = noresult 
ip[10.1.1.1

Text2

Id                = 0007      
Cause          = ERROR      
Code     = 307      
Event Time              = 2020-11-09 10:16:48      
Severity      = WARNING      
Severity Code = 5      
Id                = 0008      
Cause          = FAILURE 
result = noresult     
Code     = 517      
Event Time              = 2020-11-09 10:19:47      
Severity      = MINOR      
Severity Code = 4  
result = noresult
ip[10.1.1.3

必要的结果:将Text1

Id                = 0005      
Cause          = ERROR      
Code     = 307      
Event Time              = 2020-11-09 10:16:48      
Severity      = WARNING      
Severity Code = 5     
result = 10.1.1.1
Id                = 0006      
Cause          = FAILURE      
Code     = 517      
Event Time              = 2020-11-09 10:19:47      
Severity      = MINOR      
Severity Code = 4 result = 10.1.1.1
ip[10.1.1.1

Text2

Id                = 0007      
Cause          = ERROR      
Code     = 307      
Event Time              = 2020-11-09 10:16:48      
Severity      = WARNING      
Severity Code = 5      
Id                = 0008      
Cause          = FAILURE 
result = 10.1.1.3
Code     = 517      
Event Time              = 2020-11-09 10:19:47      
Severity      = MINOR      
Severity Code = 4  
result = 10.1.1.3
ip[10.1.1.3

如果ip始终是您的最后一个字段,您可以简单地这样做:

txt = txt.replace("noresult", txt.split("ip[")[-1])

具体来说,如果你想读、修改和写:

txt = open("filename.txt", "r").read()
txt = txt.replace("noresult", txt.split("ip[")[-1])
open("filename.txt", "w").write(txt)

如果您有更多的文件,您可以将它们的路径分组在列表file_list = ["file1.txt", "file2.txt", ... ]中,然后在此列表上循环重复上述过程:

for filepath in file_list:
txt = open(filepath, "r").read()
txt = txt.replace("noresult", txt.split("ip[")[-1])
open(filepath, "w").write(txt)

最新更新