You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas读取文本文件的键值对并写入CSV?

日志文件解析为CSV的解决方案

针对你提供的日志文件解析需求,这里给出完整的Python实现代码,解决了重复字段、格式不统一等问题:

完整代码

import pandas as pd
import re

# 定义固定的前四个字段
fixed_fields = ['Name', 'Date', 'Time', 'Activity']
data = []

with open('Input.log', 'r') as f:
    for line in f:
        line = line.strip()
        # 处理重复的Activity字段(如"Call Activity: Search")
        line = re.sub(r'Activity: [^|]+?Activity:', 'Activity:', line)
        # 分割字段并去除多余空格
        parts = [part.strip() for part in line.split('|')]
        
        row = {field: '' for field in fixed_fields}
        extra_fields = {}
        
        for part in parts:
            if ': ' in part:
                key, value = part.split(': ', 1)
                # 补全Time的分钟为两位(如16:0 → 16:00)
                if key == 'Time':
                    hour, minute = value.split(':')
                    value = f"{hour}:{minute.ljust(2, '0')}"
                if key in fixed_fields:
                    row[key] = value
                else:
                    extra_fields[key] = value
        
        row.update(extra_fields)
        data.append(row)

# 转换为DataFrame并调整列顺序
df = pd.DataFrame(data)
all_columns = fixed_fields + [col for col in df.columns if col not in fixed_fields]
df = df[all_columns]

# 写入CSV文件
df.to_csv('output.csv', index=False)

# 打印预览
print(df.to_string(index=False))

关键处理逻辑

  • 重复Activity字段修复:用正则表达式替换掉多余的前置Activity内容,确保只保留最后一个Activity值
  • Time格式统一:将一位数的分钟补全为两位(如16:0转为16:00),匹配标准时间格式
  • 动态字段兼容:自动识别日志中除固定四列外的所有额外字段,缺失字段自动填充为空值
  • 列顺序控制:保证固定字段始终排在前列,其余字段按首次出现顺序排列

运行代码后,会生成符合要求的output.csv文件,内容结构与你给出的期望输出一致。

内容的提问来源于stack exchange,提问作者John Doe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 17:30:56