跳转至

基于正则的通用txt转 CSV 工具

这是给小弟写的定制化数据清洗脚本,主要用于解析特定格式的文本日志(带版本号边界与时间戳),并将其转换为结构化的 CSV 文件。

  • 工具脚本名: txt2csv.py
  • 适用场景: 日志上半部分为字段名,中间以版本号(如 1.6.8.5)隔开,下半部分为按时间戳(HH:MM:SS)开头的流式数据。

完整源代码

import csv
import re

# 读取 txt 文件
with open(fr"C:\Users\12361\Desktop\2025_04_02_00.txt", "r", encoding="utf-8") as f:
    raw_data = f.read()

# 分割字段和数据部分
split_point = re.search(r"\d+\.\d+\.\d+\.\d+", raw_data)
if not split_point:
    raise ValueError("⚠️ 未找到版本号分界线,检查原始文本格式")

header_part = raw_data[:split_point.start()].strip()
data_part = raw_data[split_point.end():].strip()

# 获取字段名
headers = [h.strip() for h in header_part.split(",")]

# 使用正则匹配所有记录,以时间戳开头
pattern = re.compile(r"(\d{2}:\d{2}:\d{2})(.*?)(?=\d{2}:\d{2}:\d{2}|$)", re.DOTALL)
matches = pattern.findall(data_part)

rows = []
for time_str, data_str in matches:
    # 清洗和分割每个记录的值
    values = [v.strip() for v in data_str.strip().lstrip(",").split(",")]
    row = [time_str] + values
    rows.append(row)

# 写入 CSV 文件
with open(fr"C:\Users\12361\Desktop\2025_04_02_00.csv", "w", newline='', encoding="utf-8") as f:
    writer = csv.writer(f)
    writer.writerow(headers)
    writer.writerows(rows)

print("✅ 通用格式 CSV 文件写入成功:output.csv")