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

Box*_*iom 5 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
Run Code Online (Sandbox Code Playgroud)

每个值都由一个选项卡分隔.

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

-419.795
-419.795
-345.551
Run Code Online (Sandbox Code Playgroud)

最简单的方法是什么?

Niz*_*med 10

with open('results.dat') as f:
    [line.split()[7] for line in f]  
Run Code Online (Sandbox Code Playgroud)

或定义一个函数,

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

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

array.array('d',map(float,get_col(8)))
Run Code Online (Sandbox Code Playgroud)


Avi*_*Raj 5

你可以使用csv模块.

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