我有e数据库正常txt名为DB.TXT(分隔符Tab只应用数字),如下所示:
Date Id I II III IV V
17-jan-13 aa 47 56 7 74 58
18-jan-13 ab 86 2 30 40 75
19-jan-13 ac 72 64 41 81 80
20-jan-13 ad 51 26 43 61 32
21-jan-13 ae 31 62 32 25 75
22-jan-13 af 60 83 18 35 5
23-jan-13 ag 29 8 47 12 69
我想知道Python中用于跳过第一行(Date,I,II,III,IV,V)和前两列(Date和Id)的代码,同时阅读文本文件。 (数字残差应该做和和乘法等。)
阅读txt文件后,它将显示如下:
47 56 7 74 58
86 2 30 40 75
72 64 41 81 80
51 26 43 61 32
31 62 32 25 75
60 83 18 35 5
29 8 47 12 69
文件格式为txt,而非CSV。
答案 0 :(得分:0)
使用csv module跳过第一行,只需调用next(f)
即可推进文件迭代器。要跳过前两行,您可以使用row = row[2:]
:
import csv
with open(filename, 'rb') as f:
next(f) # skip the first line
for row in csv.reader(f, delimiter='\t'):
row = row[2:] # skip the first two columns
row = map(int, row) # map the strings to ints
答案 1 :(得分:0)
如果您只想对行进行计算,则可以执行以下操作:
with open("data.txt") as fh:
fh.next()
for line in fh:
line = line.split() # This split works equally well for tabs and other spaces
do_something(line[2:])
如果您的需求更复杂,最好使用像Pandas这样的库,它可以处理标题和标签列以及正则表达式分隔符,并且可以让您轻松访问列:
import pandas
data = pandas.read_csv("blah.txt", sep="\s+", index_col=[0,1])
data.values # array of values as requested
data.sum() # sum of each column
data.product(axis=1) # product of each row
etc...
sep
是一个正则表达式,因为你说它并不总是\t
,而index_col
会产生前两列的列标签。
答案 2 :(得分:0)
“python中的代码”相当广泛。使用numpy,它是:
In [21]: np.genfromtxt('db.txt',dtype=None,skip_header=1,usecols=range(2,6))
Out[21]:
array([[47, 56, 7, 74],
[86, 2, 30, 40],
[72, 64, 41, 81],
[51, 26, 43, 61],
[31, 62, 32, 25],
[60, 83, 18, 35],
[29, 8, 47, 12]])