使用Python将文本文件指定数据转换为CSV格式报错问题咨询
报错原因
你当前的代码只过滤了带RAW的行,原始文件中残留的Run行、版本标识行、空行都没有逗号分隔结构,pandas读取时会默认按第一行的字段数(只有1个字段)校验后续行,后续AD数据行有9个字段,就会触发字段数不匹配的报错。
解决方案
不要直接覆盖原始文件,先逐行读取拆分出批次元数据(Run行)和有效AD数据行,先把Run行写入CSV,再追加写入结构化的表格数据即可,同时跳过所有无效行避免解析错误。
可直接运行的代码
import pandas as pd # 读取原始文件,不修改原文件避免数据丢失 with open("sample data as comma.txt", "r", encoding="utf-8") as f: all_lines = [line.strip() for line in f.readlines()] run_batch_info = "" valid_ad_rows = [] for line in all_lines: # 跳过空行、版本行、RAW数据行 if not line or line.startswith("\\\\") or "RAW Values" in line: continue # 提取Run批次信息 if line.startswith("Run"): run_batch_info = line continue # 收集AD有效数据,去掉末尾多余逗号 if line.endswith(","): line = line[:-1] valid_ad_rows.append(line.split(",")) # 生成结构化DataFrame col_names = ['标识列', 'TH+', 'Vacm', 'Vout', 'Bat mon', 'TH-', 'Vbat2', 'Vamb', '冗余列'] df = pd.DataFrame(valid_ad_rows, columns=col_names) # 按要求写入CSV with open("Sample raw data CSV.csv", "w", encoding="utf-8", newline="") as f: # 先写入单独的Run批次行,加空行和后续表格分隔 f.write(f"{run_batch_info}\n\n") # 写入表格数据,关闭自动生成的索引列 df.to_csv(f, index=False)
多批次场景扩展
如果你的文件包含多个Run批次,只需要在每次检测到Run行时,先把上一个批次的DataFrame写入文件,再写入新的Run行,重置有效数据列表即可适配。
内容的提问来源于stack exchange,提问作者fudgey
相关产品推荐
相关产品推荐

