如何快速解析混合分隔符.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
相关产品推荐
相关产品推荐

