编辑了我的代码,尝试了另一种方法来获得所需的输出。 让我知道是否正确
import re
pattern1 = re.compile(r'\b(ERROR)')
pattern2 = re.compile(r'^\d+-\d+-\d+')
count =0
with open('sample.txt',encoding='utf-8')as f:
for i in f:
a= re.search(pattern1,i)
if a:
count = count + 1
b = re.search(pattern2,i)
if b:
print(b.group(),':',a.group())
print('Total ERROR in the logfile:',count)
***output:***
2019-11-22 : ERROR
2019-11-22 : ERROR
2019-11-20 : ERROR
Total ERROR in the logfile: 3
log.txt 2019-11-22 16:46:46,985-主要-信息-开始等待文件 2019-11-22 16:46:56,645-主要-信息-开始:尝试1检查新文件 2019-11-22 16:47:46,488-主要-信息-成功:从云存储下载文件:返回
2019-11-22 16:48:48,180-主要-错误-失败:正在等待文件 2019-11-22 16:49:17,918-主要-信息-开始等待文件 2019-11-22 16:49:32,160-主要-信息-开始:尝试1检查新文件 2019-11-22 16:49:39,329-主要-警告-成功:从云存储下载文件:
2019-11-22 16:53:30,706-主要-警告-开始等待文件 2019-11-22 16:53:48,180-主要-错误-失败:等待文件文件
2019-11-20 10:00:00,121-主要-错误-失败:正在等待文件中的文件
答案 0 :(得分:0)
用于匹配错误行的模式是:
^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.*\bERROR\b.*$
您更新的脚本:
pattern1 = re.compile(r'^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.*\bERROR\b.*$')
count = 0
with open('log.txt',encoding='utf-8')as f:
for i in f:
a = re.search(pattern1, i)
if a:
count = count + 1