我有许多文本文件,格式如下,
%header
%header
table
.
.
.
another table
.
.
.
如果我没有第二张表,我可以使用简单的commnad来读取文件,例如:
numpy.loadtxt(file_name, skiprows=2, dtype=float, usecols={0, 1})
有一种简单的方法可以读取第一个表而无需逐行读取文件,例如numpy.loadtxt
答案 0 :(得分:2)
使用numpy.genfromtxt
并根据标题中的信息设置max_rows
。
例如,我创建了以下数据文件:
# nrows=10
# nrows=15
1
2
3
4
5
6
7
8
9
10
.
.
.
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
.
.
.
以下过度简化的代码可以从文件中读取两个表(当然,您可以增强代码以满足您的需求):
f = open('filename.txt')
# read header and find the number of rows to read for each table:
p = f.tell()
l = f.readline()
tabrows = []
while l.strip().startswith('#'):
if 'nrows' in l:
tabrows.append(int(l.split('=')[1]))
p = f.tell()
l = f.readline()
f.seek(p)
# read all tables assuming each table is followed by three lines with a dot:
import numpy as np
tables = []
skipdots = 0
ndotsafter = 3
for nrows in tabrows:
tables.append(np.genfromtxt(f, skip_header=skipdots, max_rows=nrows))
skipdots = ndotsafter
f.close()