pandas导入重复格式文本文件时无法用','分隔符拆分数据求助
结构化解析重复规律日志的解决方案
你之前遇到的ParserError报错是因为原始文本不是标准CSV格式,不同行的分隔符不统一,部分行用逗号分隔、部分行用空格分隔,强行通过CSV规则读取无法适配,完全可以直接解析原始TXT文件实现需求,具体实现如下:
实现逻辑
- 首先确认数据分组规则:每组数据固定为11行,首行是时间戳,最后一行以
BPA3字段结尾,按11行切割所有原始行即可拆分出所有独立数据组 - 逐组解析字段:逗号分隔的行按
,拆分出键值对,空格分隔的电压行按空格拆分出单值,最后把每组所有字段拼接为单行数据 - 所有组解析完成后统一转为DataFrame格式即可得到结构化表格
可运行代码
import pandas as pd # 读取原始TXT文件,过滤空行 with open("你的原始数据文件.txt", "r", encoding="utf-8") as f: all_lines = [line.strip() for line in f if line.strip()] # 按每组11行拆分所有数据 group_line_count = 11 data_groups = [all_lines[i:i+group_line_count] for i in range(0, len(all_lines), group_line_count)] processed_rows = [] for group in data_groups: current_row = [] # 首行加入时间戳 current_row.append(group[0]) # 处理第2-5行:逗号分隔的状态字段 for line in group[1:5]: current_row.extend([item.strip() for item in line.split(",")]) # 处理第6-9行:空格分隔的电压字段 for line in group[5:9]: current_row.extend(line.split()) # 处理第10-11行:剩余逗号分隔字段 current_row.extend([item.strip() for item in group[9].split(",")]) current_row.extend([item.strip() for item in group[10].split(",")]) processed_rows.append(current_row) # 生成结构化DataFrame,自动按规则命名列 df = pd.DataFrame(processed_rows) df.index.name = "Index" df.columns = [f"字段{i+1}" for i in range(df.shape[1])] # 可以直接查看结果,或者导出为CSV print(df.head()) df.to_csv("结构化输出结果.csv", encoding="utf-8-sig")
运行上述代码即可得到你需要的按行分组的结构化表格,完全匹配你给出的样例格式要求。
内容的提问来源于stack exchange,提问作者Vaibhav Ghildiyal
相关产品推荐
相关产品推荐

