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

如何使用Python将txt日志文件转换为指定格式带表头CSV文件

TXT日志转指定格式CSV实现方法

处理逻辑说明

  • 日志文件包含三类内容:带接收时间的批次标记行、$开头的有效数据行、无内容空行
  • 每段时间标记行对应的时间,属于其下方所有后续数据行,直到遇到下一个时间标记行
  • 有效数据行的字段以多空格作为分隔符,最后一个字段末尾带*标记,需要单独清理
  • 最终输出CSV第一行写入自定义表头,后续按顺序写入处理后的字段即可

快速实现方案(Python脚本,适配大数据量)

直接运行以下脚本即可,仅需要修改脚本里的输入文件路径、输出文件路径、表头字段三个部分:

import csv
import re

# -------------------------- 按需修改以下配置 --------------------------
INPUT_TXT_PATH = "your_log.txt"  # 替换成你的txt日志文件实际路径
OUTPUT_CSV_PATH = "result.csv"   # 替换成你要输出的csv文件保存路径
# 按目标CSV的列顺序填写表头,第一个字段为接收时间,后续字段和数据行拆分顺序一一对应
CSV_HEADER = [
    "receive_time", "flag", "seq", "encrypt_type", "protocol_ver", "data_type",
    "signal_level", "imsi", "device_id", "status1", "status2", "status3", "status4",
    "status5", "status6", "status7", "status8", "status9", "status10", "status11",
    "status12", "status13", "operator", "param1", "param2", "param3", "param4",
    "param5", "direction", "ext1", "ext2", "ext3", "ext4", "ext5", "ext6", "ext7",
    "ext8", "data_seq", "check_code"
]
# --------------------------------------------------------------------

current_receive_time = ""

with open(INPUT_TXT_PATH, "r", encoding="utf-8") as infile, \
     open(OUTPUT_CSV_PATH, "w", encoding="utf-8-sig", newline="") as outfile:
    writer = csv.writer(outfile)
    writer.writerow(CSV_HEADER)  # 写入表头

    for line in infile:
        line = line.strip()
        if not line:
            continue  # 跳过空行
        # 匹配时间标记行,提取当前批次时间
        if line.startswith("New Data Received at :"):
            current_receive_time = line.split(":", 1)[1].strip()
            continue
        # 匹配有效数据行,处理后写入
        if line.startswith("$"):
            # 按连续空白字符拆分字段,兼容多空格、制表符分隔场景
            fields = re.split(r"\s+", line)
            # 清理最后一个字段末尾的*标记
            fields[-1] = fields[-1].rstrip("*")
            # 拼接时间字段组成完整行写入
            row = [current_receive_time] + fields
            writer.writerow(row)

说明:脚本默认使用utf-8-sig编码输出CSV,直接用Excel打开不会出现中文乱码;如果字段名和你的目标CSV要求不一致,直接修改CSV_HEADER里的列名即可,不需要改动处理逻辑。

小数据量临时处理方案(Excel操作)

如果只有少量日志需要转换,无需写代码也能实现:

  1. 新建空白Excel,点击「数据」选项卡-「自文本/CSV」,选择目标txt日志文件
  2. 导入时分隔符选择「空格」,勾选「连续分隔符视为单个」,完成数据加载
  3. 筛选删除空行、无效行,给同一批次的数据批量填充对应的接收时间
  4. 新增表头行,最后点击「另存为」选择CSV格式导出即可。

内容的提问来源于stack exchange,提问作者Pradip Waghela

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 18:15:58