You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将格式混乱的空格分隔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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 21:35:55