如何用Python正则按指定时间戳分割日志并筛选传输错误
用Python正则处理日志并筛选传输错误条目
步骤1:按时间戳分割日志条目
我们可以用正则表达式匹配每个以YYYY-MM-DDThh:mm:ssZ格式时间戳开头的完整日志条目。使用re.findall()捕获所有符合格式的条目,正则模式会匹配时间戳,以及后续直到下一个时间戳(或日志结尾)的内容。
代码示例:
import re logs = "2018-10-23T09:35:29Z sent message 2018-10-23T09:35:29Z transmit error 2018-10-23T09:49:29Z sent message 2018-10-23T10:01:49Z sent message 2018-10-23T10:05:29Z transmit error" # 匹配时间戳开头的完整日志条目 pattern = r'\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z.*?(?=\s*\d{4}-\d{2}-\d{2}T|$)' log_entries = re.findall(pattern, logs, re.DOTALL) # 去除条目首尾多余空格(可选) log_entries = [entry.strip() for entry in log_entries]
执行后log_entries会得到:
["2018-10-23T09:35:29Z sent message", "2018-10-23T09:35:29Z transmit error", "2018-10-23T09:49:29Z sent message", "2018-10-23T10:01:49Z sent message", "2018-10-23T10:05:29Z transmit error"]
步骤2:筛选包含transmit error的条目
通过列表推导式遍历分割后的条目,筛选出包含目标字符串的条目:
error_entries = [entry for entry in log_entries if 'transmit error' in entry]
最终error_entries的结果是:
["2018-10-23T09:35:29Z transmit error", "2018-10-23T10:05:29Z transmit error"]
内容的提问来源于stack exchange,提问作者Gowthi
相关产品推荐
相关产品推荐

