带多空格分隔的TXT转Excel时列名异常问题求助
解决Pandas读取空格分隔TXT生成多余Unnamed列的问题
问题场景
你的TXT文件格式如下:
Data : .txt format ID FULL NAME SECURITY NUMBER 1234 ALEXANDER XAVIER ROBEN A.B. HAPPY123 3456 MOHAMMED ALI ZAFAR B.8 GHDF67
用原有Pandas代码读取时,会生成大量Unnamed列,输出完全不符合预期:
ID Unanamed1 Unanamed2 Unanamed3 FULL NAME Unanamed4 Unnamed5 SECURITY NUMBER 1234 ALEXANDER XAVIER ROBEN A.B.HAPPY 123 3456 MOHAMMED ALI ZAFAR B.8 GHDF67
期望得到的Excel格式是保留原始列名和对应数据:
ID FULL NAME SECURITY NUMBER 1234 ALEXANDER XAVIER ROBEN A.B.HAPPY123 3456 MOHAMMED ALI ZAFAR B.8 GHDF67
错误原因
原有代码用delimiter=' '指定单空格作为分隔符,但你的TXT是多连续空格分隔列,且列名本身包含空格(比如FULL NAME),Pandas会把每个单空格都当成分隔符,导致列名和数据被错误拆分,生成大量Unnamed列。
解决方案
- 使用
sep='\s+'匹配任意数量的连续空白字符(空格、制表符等)作为分隔符,避免拆分列名里的单个空格 - 用
skiprows=1跳过TXT开头的Data : .txt format注释行 - 保留原始列名,不需要做连字符拼接操作
正确代码示例
import pandas as pd # 读取TXT文件,处理多空格分隔和跳过注释行 df = pd.read_csv('ConsRelLab19072023 (1).txt', sep='\s+', skiprows=1) # 直接保存为Excel df.to_excel('output.xlsx', index=False)
验证结果
运行上述代码后,Excel会正确生成三列:ID、FULL NAME、SECURITY NUMBER,数据对应完全符合预期。
内容的提问来源于stack exchange,提问作者technical
相关产品推荐
相关产品推荐

