如何将格式混乱的空格分隔TXT文件转换为规范CSV文件?
解决空格分隔TXT转CSV的列匹配问题
问题背景
需要将一份格式混乱的空格分隔TXT文件转换为规范CSV,但数据无法与CSV输出列正确匹配。
样本数据
HP TRA ID CL ID IN/EId No Loop Element Name Freq STATUS Error Severity Error ID Message Report Source 13ZI 20712800032 1 Denied Error HP_DOSOlderTh Date of service is older than 12 months HP 13ZI 20712800032 1 1 Rejected Error CA16 Rejected at level. DupKeyID:0 is a Rejected of DupKeyID:0 from EncounterID:15C7XE9GV00 Claim ID:P_20712800032ALPHA_1649845496_19961109508100_716. HP 13ZI 20712800032 2 1 Rejected Error CA16 Rejected at level. DupKeyID:1 is a Rejected of DupKeyID:1 from EncounterID:15C7XE9GV00 Claim ID:P_20712800032ALPHA_1649845496_19961109508100_716. HP 13ZI 20712800032 3 1 Rejected Error CA16 Rejected at level. DupKeyID:2 is a Rejected of DupKeyID:2 from EncounterID:15C7XE9GV00 Claim ID:P_20712800032ALPHA_1649845496_19961109508100_716. HP 1P8TY0J25 20712805263 1 Denied Error HP_DOSOlderTh Date of service is older than 12 months
尝试过的无效代码
# 尝试用制表符分隔读取 df = pd.read_csv('file1.txt', sep='\t', index_col=False, dtype='object') df.to_csv(r'Report.csv', index = None)
# 尝试用多个空格作为分隔符 df = pd.read_csv("file1.txt", sep=r"\s{2,}", engine="python") df.to_csv(r'Report.csv', index = None)
解决方案
你的数据属于固定宽度格式(各列位置固定,用空格填充),而非普通的分隔符分隔文件,因此需要用pandas.read_fwf()(Fixed Width Format)来读取:
import pandas as pd # 自动识别固定宽度列读取文件 df = pd.read_fwf('file1.txt', dtype='object') # 保存为规范CSV df.to_csv('Report.csv', index=None)
关键说明
- 之前用
read_csv的问题:sep='\t':文件实际不是制表符分隔,完全不匹配;sep=r"\s{2,}":会将Message字段中的空格误判为列分隔符,导致该字段被拆分成多列,同时空列的位置会被错误合并。
read_fwf会根据各列的固定位置识别数据,完美适配这种空格填充的格式,能保证每一行数据正确对应表头列。
内容的提问来源于stack exchange,提问作者Anusha
相关产品推荐
相关产品推荐

