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

Python(Spyder)导入多空格分隔TXT数据失败,求解决方案

解决多空格分隔TXT文件的Python导入问题

针对你遇到的多空格分隔TXT文件导入问题,以下是几种高效的解决方案:

方法一:用Pandas快速导入并选列

Pandas对这类不规则分隔的文件处理最省心,直接指定分隔符为任意空白字符即可:

import pandas as pd
# sep='\s+'匹配任意数量的空格或制表符,自动忽略行尾多余空格
df = pd.read_csv('C1.txt', sep='\s+', header=None)
# 按需选取列(示例选第0和第1列,索引从0开始)
selected_data = df.iloc[:, [0, 1]]
# 若需要numpy数组格式,直接转换
data_array = selected_data.values

这种方法自动处理多空格、行尾空格问题,还能直接通过iloc快速筛选目标列,后续分析绘图也更方便。

方法二:用Numpy导入的正确方式

如果习惯用Numpy,只需调整分隔符参数,避免手动指定单个空格:

import numpy as np
# delimiter=None让Numpy自动识别任意空白分隔符
data = np.loadtxt('C1.txt', delimiter=None)
# 选取目标列(示例选第0和第2列)
selected_data = data[:, [0, 2]]

如果存在少数行格式异常导致列数不一致,可用genfromtxt跳过错误行:

data = np.genfromtxt('C1.txt', delimiter=None, invalid_raise=False)
# 清理含NaN的异常行
data = data[~np.isnan(data).any(axis=1)]

为什么之前的方法会报错?

你之前用delimiter=' '时,Numpy会把每个单个空格当成分隔符,多个连续空格就会生成空字符串列,导致loadtxt无法将空字符串转为浮点数;genfromtxt则会因为每行分隔出的列数不一致抛出错误。而delimiter=None或sep='\s+'会自动把任意数量的空白字符视为一个分隔符,完美适配你的数据格式。

内容的提问来源于stack exchange,提问作者Igor Moravčík

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 15:10:07