日志列表转换:提取含等号行并将列格式行转为键值对
日志行筛选与格式转换解决方案
核心处理逻辑
- 先定位包含
QUWERW的表头行,拆分提取表头字段列表 - 遍历所有日志行:
- 含
=的行直接保留原内容 - 匹配表头格式的数据行,按表头字段与对应位置内容生成键值对字符串
- 含
代码实现示例(Python)
def process_log_lines(log_lines): processed = [] headers = None # 先识别表头行 for line in log_lines: stripped_line = line.strip() if 'QUWERW' in stripped_line: # 按空格拆分表头,可根据实际分隔符(制表符/逗号)调整 headers = [h.strip() for h in stripped_line.split() if h.strip()] break # 逐行处理日志 for line in log_lines: stripped_line = line.strip() if not stripped_line: continue # 保留含=的行 if '=' in stripped_line: processed.append(stripped_line) continue # 将表头对应的数据行转为键值对 if headers: fields = [f.strip() for f in stripped_line.split() if f.strip()] if len(fields) == len(headers): kv_pairs = [f"{k}={v}" for k, v in zip(headers, fields)] processed.append(' '.join(kv_pairs)) return processed # 测试示例 sample_log = [ "Timestamp=2024-05-20 10:00:00", "QUWERW ID Name Status", "1001 Alice Active", "Server=prod-01", "1002 Bob Inactive" ] for line in process_log_lines(sample_log): print(line)
适配调整说明
- 若表头/数据行的分隔符不是空格,修改
split()参数(比如split('\t')对应制表符、split(',')对应逗号) - 若存在表头与数据行字段数不匹配的情况,可添加跳过逻辑避免报错
- 需保存结果到文件时,添加以下代码:
with open('processed_log.txt', 'w') as f: f.write('\n'.join(process_log_lines(sample_log)))
内容的提问来源于stack exchange,提问作者Rasec Malkic
相关产品推荐
相关产品推荐

