如何将txt日志文件数据按字段拆分并导入为pandas DataFrame?
pandas拆分结构化日志生成DataFrame实现方法
直接上适配你日志格式的可运行完整代码:
import pandas as pd import re # 1. 定义日志匹配正则,完全适配你提供的日志结构 log_pattern = r'^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2},\d+) - (\w+) - ThreadID: (\d+); Class: (\w+); Method: ([\w_]+); Line: (\d+); Comment: (.*)$' # 2. 定义DataFrame列名,可根据需求自行修改 columns = ["日志时间", "日志级别", "ThreadID", "类名", "方法名", "代码行号", "备注"] # 3. 读取日志文件并逐行解析 log_data = [] with open("你的日志文件路径.txt", "r", encoding="utf-8") as f: for line in f: # 去除每行首尾的*号、空白符、换行符,自动过滤空行 cleaned_line = line.strip("* \n") if not cleaned_line: continue # 正则匹配提取对应字段 match_res = re.match(log_pattern, cleaned_line) if match_res: log_data.append(list(match_res.groups())) # 4. 生成DataFrame并做基础类型转换,方便后续分析 df = pd.DataFrame(log_data, columns=columns) # 可选类型转换,不需要可以注释 df["日志时间"] = pd.to_datetime(df["日志时间"], format="%Y-%m-%d %H:%M:%S,%f") df["ThreadID"] = df["ThreadID"].astype("int64") df["代码行号"] = df["代码行号"].astype("int32") # 输出前几行校验结果 print(df.head())
补充说明
- 若后续日志字段有调整,仅修改正则匹配规则即可
- 不符合格式的异常日志行默认会被过滤,需要留存的话可以在正则匹配失败的分支单独记录
内容的提问来源于stack exchange,提问作者Max Cooperman
相关产品推荐
相关产品推荐

