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

如何快速解析混合分隔符.dat文件为Python列表或numpy数组

.dat混合分隔符文件解析解决方案

直接采用头部分离读取+正则提取参数+numpy读取数据段的方案即可完美适配你的需求,核心逻辑是避开不同分隔符的冲突,将格式不同的头部和数据段分开处理,实现代码如下:

import numpy as np
import re

# 替换为你的.dat文件实际路径
file_path = "sample.dat"

# 提取第三行的I、J数值
with open(file_path, 'r', encoding='utf-8') as f:
    # 读取前4行头部内容,第三行对应索引为2
    header = [next(f) for _ in range(4)]
zone_line = header[2]
# 正则匹配I、J后的整数数值
I = int(re.search(r'I=(\d+)', zone_line).group(1))
J = int(re.search(r'J=(\d+)', zone_line).group(1))
print(f"I = {I}, J = {J}")

# 读取第五行及之后的数值数据,自动适配空格分隔
# skiprows=4代表跳过前4行头部
data_array = np.loadtxt(file_path, skiprows=4, dtype=np.float64)
# 如需转换为Python列表调用tolist()即可
data_list = data_array.tolist()

补充说明

  • 如果需要严格区分数值列类型(比如最后两列保留整数类型),可以给np.loadtxt指定自定义dtype参数,示例如下:
    # 依次定义四列的字段名和数据类型
    custom_dtype = [('x_mm', 'f8'), ('y_mm', 'f8'), ('intensity', 'i4'), ('is_valid', 'i1')]
    data_array = np.loadtxt(file_path, skiprows=4, dtype=custom_dtype)
    
  • 该方案读写效率极高,即使是GB级的大型.dat文件也可以快速处理,不会出现额外性能损耗。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:57:03