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

Python读取无分隔符文本文件并提取指定列的技术求助

解决Pandas读取空格分隔文本文件并提取指定列的问题

咱们一步步来搞定这个问题,核心问题出在文本分隔符设置不对,还有header参数的用法不符合你的需求,才导致只输出了一列。

问题拆解

你的文本文件是多空格分隔的,但pandas.read_csv默认用逗号当分隔符,所以会把整行内容当成一列。另外,header=4是把第5行当成表头,但你不需要表头,反而要跳过前3行H26开头的无关内容,直接读取后续A开头的数据行。

完整解决方案代码

import pandas as pd

# 读取文件:用正则匹配任意数量空格做分隔符,跳过前3行H26内容,不设置表头
df = pd.read_csv("data.txt", sep='\s+', skiprows=3, header=None)

# 提取目标列:处理时间列保留前5位,再取坐标列
result = pd.DataFrame({
    'time': df[2].astype(str).str[:5],
    'x_coord': df[10],
    'y_coord': df[11]
})

# 输出你想要的格式
print(result.to_string(index=False, header=False))

代码细节解释

  1. sep='\s+':告诉Pandas用任意数量的空白字符(空格、制表符都算)作为列分隔符,这样就能正确拆分每一列数据。
  2. skiprows=3:直接跳过前3行H26开头的无效内容,从第4行(A开头的行)开始读取有效数据。
  3. header=None:因为你的数据没有专门的表头行,所以不让Pandas把第一行数据误判为表头。
  4. 列提取与处理:
    • 时间列是原始数据的第3列(索引从0开始,对应df[2]),转成字符串后截取前5位,得到你要的2008.5格式。
    • X坐标是原始数据的第11列(df[10]),Y坐标是第12列(df[11])。
  5. 最后用to_string(index=False, header=False)输出纯数据行,完全符合你想要的格式。

示例输出

运行后会得到你期望的结果:

2008.5 264363.6 4122568.8
2008.5 264363.6 4122568.8
2008.5 264363.6 4122568.8
2008.5 264363.6 4122568.8
2008.5 264363.6 4122568.8
...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 11:12:53