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

使用pandas read_table读取含无空格负数的空格分隔表格问题

解决pandas读取空格分隔但负数无间隔数据的问题

嘿,这个坑我之前踩过!你的问题核心在于数据里的负数和前一个数值连在一起了(比如0.00000E+00-7.52896E-04),read_table默认按空格分割,自然没法识别这是两个独立的数值。给你两个实用的解决方案:

方法一:正则预处理文本(通用场景)

先把文件内容读出来,用正则表达式在合法的负数符号前插入空格,再交给pandas读取:

import pandas as pd
import re
from io import StringIO

# 读取原始文件内容
with open("your_data_file.txt", "r") as f:
    raw_content = f.read()

# 正则替换:在数字、E/e、+后面的"-"前加空格
processed_content = re.sub(r"([0-9Ee\+])-", r"\1 -", raw_content)

# 用处理后的内容生成DataFrame
df = pd.read_table(StringIO(processed_content), sep="\s+")

这个正则逻辑很明确:只匹配那些紧跟在数字、科学计数法标识(E/e)或者正号后面的负号,给它前面补个空格,这样就把连在一起的数值彻底分开了,完全不影响其他正常符号。

方法二:固定宽度读取(列宽固定时更高效)

如果你的数据每一列的字符宽度是固定的(看你的示例,科学计数法的格式很规整,大概率符合),直接用read_fwf(fixed-width format)会更省心:

import pandas as pd

# 假设每列宽度为12(根据你的实际数据调整列数和宽度)
df = pd.read_fwf("your_data_file.txt", widths=[12]*13)

你可以数一下示例里每个数值的字符数,调整widths里的参数,这种方法不需要文本预处理,速度更快。

最后记得检查一下生成的DataFrame,看看数值类型是否正确(应该都是float64),有没有分割错误的情况~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:38:42