从Python中的.dat文件中读取特定列

时间:2015-03-29 11:16:38

标签: python file-io

我有一个results.dat文件,其中包含以下数据:

7522126 0   0   0   0   0   0   -419.795    -186.24 1852.86 0.134695    -0.995462   -2.53153
7825452 0   0   0   0   0   0   -419.795    -186.24 1852.86 0.134695    -0.995462   -2.53153
8073799 0   0   0   0   0   0   -345.551    -140.711    1819.04 -0.0220266  -0.85992    -2.29598

每个值都由一个标签分隔。

我想为每一行提取例如第8列的值,并将其保存到数组中。所以输出应该是这样的:

-419.795
-419.795
-345.551

实现这一目标的最简单方法是什么?

4 个答案:

答案 0 :(得分:10)

with open('results.dat') as f:
    [line.split()[7] for line in f]  

或定义一个函数,

get_col = lambda col: (line.split('\t')[col-1] for line in open('results.dat'))  

现在使用所需的列号调用该函数。 get_col(8)提供第8列数据。要将其存储在数组中,

array.array('d',map(float,get_col(8)))

答案 1 :(得分:5)

您可以使用csv module

import csv
with open('file') as f:
    reader = csv.reader(f, delimiter="\t")
    for line in reader:
        print(line[7])

答案 2 :(得分:4)

首先读取文件对象

中的文件(result.dat)文件
file = open('result.dat')

现在创建一个空列表

lst = []

循环遍历文件的每一行

for line in file:
    lst += [line.split()]

现在lst是一个列表列表,其中每个内部列表是result.dat的实例(行)

现在你可以提取任何列(在你的情况下它是第8列) 应用列表理解为此

column8 = [x[7] for x in lst]

希望这有帮助,

答案 3 :(得分:1)

  

实现这一目标的最简单方法是什么?

如果其他答案不符合您的需求,建议numpy.genfromtxt

import numpy
data = numpy.genfromtxt('result.dat', delimiter='\t')
print data[:,7]