首先,我是新手,只是学习Python,因此感谢您提出我的问题。我正在尝试将一个文件与另一个应该具有相同内容(时间戳)的文件进行比较。我正在尝试使用正则表达式和re.sub从每一行中删除时间戳,但显然我缺少一些东西。我也进行了研究,但仍无法按照我想要的方式进行任何工作。最终,我想删除日期和时间戳,但我想尝试让日期部分首先生效。日志文件的外观如下:
15/03/2019 18:25:35 0446: Successful Compile (Script file: C:\PodTools\Automation\TL000635 - Serial Interface Tool Gen2_Automation Script\Script_Pair.txt)
15/03/2019 18:25:35 0448: Pairing with the Pod
15/03/2019 18:25:35 0448: V 82 2952790016 10051
15/03/2019 18:25:35 0550: I 52 B0 00 00 00 00 00 27 43
15/03/2019 18:25:40 0974: O 3D 02
15/03/2019 18:25:40 0976: SCRIPT COMPLETE
有问题的代码:
import re
import datetime
today = datetime.date.today()
with open('C:\\PodTools\\Automation\\TL000635 - Serial Interface Tool Gen2_Automation Script\\OutputFolder\\'+str(today)+'\\Output_'+str(today)+'.txt') as f:
outputFile_contents = f.readlines()
newOutputFileContents = []
pat = re.compile(r'\d{2}[-/]\d{2}[-/]\d{4}')
for line in outputFile_contents:
[re.sub(pat, '', line)]
newOutputFileContents.append(line)
print(newOutputFileContents)
答案 0 :(得分:1)
出于您的目的,将每一行分成3列,而仅将第三列写入新文件要容易得多
with open('file.txt') as f:
for line in f:
print(line.split(maxsplit=2)[2], end='')
答案 1 :(得分:0)
要回答有关问题的具体问题,请看一行
[re.sub(pat, '', line)]
我怀疑这是问题所在,因为以下几行假定line
的值已更改-但是上面的代码并没有执行该操作。您应该使用例如:
line = re.sub(pat, '', line)
但是,如果您的日志文件的每一行都具有相同的格式,那么我建议使用@blhsing的答案,作为解决剥离时间戳记问题的更简单解决方案。