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

如何修复Python pandas read_fwf读取fwf文件时列间空白缺失的错误

问题解决方案

方案1:指定固定列宽读取(优先推荐)

fwf格式本身的设计逻辑就是按固定字符宽度拆分列,不需要依赖列间的空格分隔符,直接通过read_fwf的colspecs参数指定每一列的起止位置即可完全规避分隔符被挤占的问题。

操作步骤:

  1. 先根据正常行的内容统计每一列的字符宽度(左闭右开的索引区间),你给出的示例文件的列区间可参考如下配置:
import pandas as pd
# 每一项对应(列起始索引, 列结束索引),可根据你实际的文件宽度调整
colspecs = [
    (0, 7),
    (7, 14),
    (14, 21),
    (21, 29),
    (29, 32)
]
df = pd.read_fwf("your_file.fwf", colspecs=colspecs, header=None)

这种方式不需要修改原始文件,也不需要额外适配异常场景,稳定性最高。

方案2:预处理文件补充分隔空格

如果不想计算列宽,也可以先对原始文件做逐行预处理,匹配到数字后紧跟负号的异常场景时插入空格,再传入pandas读取:

import re
import pandas as pd
from io import StringIO

with open("your_file.fwf", "r", encoding="utf-8") as f:
    lines = f.read()
# 匹配数字后紧跟负号的场景,插入空格
processed_lines = re.sub(r"(\d)-", r"\1 -", lines)
df = pd.read_fwf(StringIO(processed_lines), header=None)

这种方式适合临时应急使用,需要注意正则规则要适配你的文件实际格式,避免误替换正常内容。

内容的提问来源于stack exchange,提问作者Oaklin Keefe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 16:09:04