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

Python读取首列含空格的空格分隔文本文件并转为NumPy数组问题问询

解决思路

方案1:逐行预处理后转NumPy数组

该方法灵活度最高,完美适配第一列含任意空格的场景:

  • 读取文件时直接跳过首行,逐行处理剩余内容
  • 对每一行内容从右向左拆分4次,得到5个片段,拆分后最左侧的片段全部归为第一列内容,不会把第一列内部的空格判定为分隔符
  • 科学计数法格式的字符串直接用float()即可转换为普通数值,若需要NumPy打印时不显示科学计数法可单独配置打印参数
  • 最后分别拼装5列数据为NumPy数组
import numpy as np

# 初始化5列的存储列表
col1, col2, col3, col4, col5 = [], [], [], [], []

with open("替换为你的文件路径.txt", "r", encoding="utf-8") as f:
    # 跳过第一行表头
    next(f)
    for line in f:
        line = line.strip()
        if not line:
            continue
        # 从右往左拆分4次,避免拆分第一列内部的空格
        parts = line.rsplit(maxsplit=4)
        col1.append(parts[0])
        # 后续4列自动解析科学计数法为普通数值
        col2.append(float(parts[1]))
        col3.append(float(parts[2]))
        col4.append(float(parts[3]))
        col5.append(float(parts[4]))

# 转换为NumPy数组
col1_arr = np.array(col1, dtype=str)
col2_arr = np.array(col2)
col3_arr = np.array(col3)
col4_arr = np.array(col4)
col5_arr = np.array(col5)

# 配置NumPy打印时不显示科学计数法
np.set_printoptions(suppress=True)

方案2:修正pandas读取参数

之前读取失败是因为默认会把所有空格判定为分隔符,调整分隔符规则即可:

  • 用正则表达式作为分隔符,仅匹配「后面紧跟数字的空格」作为列分隔符,不会拆分第一列中后面是文本的空格
  • 配置skiprows=1跳过首行,pandas会自动把科学计数法解析为普通float类型
  • 读取完成后直接调用to_numpy()方法转为NumPy数组
import pandas as pd
import numpy as np

df = pd.read_csv(
    "替换为你的文件路径.txt",
    sep=r"\s+(?=\d)",  # 仅匹配后面为数字的空格作为分隔符
    skiprows=1,
    engine="python",
    names=["第一列名称", "第二列名称", "第三列名称", "第四列名称", "第五列名称"]
)

# 分别转为NumPy数组
col1_arr = df["第一列名称"].to_numpy()
col2_arr = df["第二列名称"].to_numpy()
col3_arr = df["第三列名称"].to_numpy()
col4_arr = df["第四列名称"].to_numpy()
col5_arr = df["第五列名称"].to_numpy()

# 配置NumPy打印时不显示科学计数法
np.set_printoptions(suppress=True)

内容的提问来源于stack exchange,提问作者Sherwin R

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:27:03