使用正则表达式re.compile和re.sub从文件中删除日期/时间戳

时间:2019-03-19 20:52:39

标签: python

首先,我是新手,只是学习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)

2 个答案:

答案 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的答案,作为解决剥离时间戳记问题的更简单解决方案。

相关问题