从python中的文本文件中读取表格数据集

时间:2017-07-15 16:29:29

标签: python numpy

我有许多文本文件,格式如下,

%header
%header
table
.
.
.
another table
.
.
.

如果我没有第二张表,我可以使用简单的commnad来读取文件,例如:

numpy.loadtxt(file_name, skiprows=2, dtype=float, usecols={0, 1})

有一种简单的方法可以读取第一个表而无需逐行读取文件,例如numpy.loadtxt

1 个答案:

答案 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()