我有一个日志文件,其中包含以下对中的数据:
[Connectivity] 07.07 11:35:08
[REGISTERED]
因此我想找到每一对这样的线条并仅打印日期和时间。 我的示例txt文件是:
[Connectivity] 07.07 11:35:08
[REGISTERED]
#other stuff in the log#
[Connectivity] 07.07 17:20:22
[REGISTERED]
#more stuff in the log#
[Connectivity] 07.07 19:10:29
[REGISTERED]
我想要打印的内容应该是
1: 07.07 11:35:08
2: 07.07 17:20:22
3: 07.07 19:10:29
当然,每次使用另一天的日志文件时,日期和时间都会有所不同。我假设我应该使用RE来完成这个,但是我不能让我的代码查找两个组合的行,只有一行。
我厌倦了粗糙的正则表达式,但它让我失望了:
re.findall('(\\[Connectivity\\])(\s)(\d\d\\.\d\d\s\d\d:\d\d:\d\d)\s\\[REGISTERED\\]', line, re.MULTILINE)
有谁知道如何做到这一点?
答案 0 :(得分:0)
>>> re.findall(r'\[Connectivity\]\s+(\d{2}\.\d{2} \d{2}:\d{2}:\d{2})\s+\[REGISTERED]', line, re.MULTILINE)
['07.07 11:35:08', '07.07 17:20:22', '07.07 19:10:29']
答案 1 :(得分:0)
你可以试试这个:
import re
data = [i.strip('\n') for i in open('log.txt')]
final_results = [re.sub("\[Connectivity\]\s", '', data[i]) for i in range(len(data)-1) if i.startswith("[Connectivity]") and data[i+1] == "[REGISTERED]"]
new_final_data = ["{}: {}".format(i+1, a) for i, a in enumerate(final_results)]