基于正则的通用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")