如何将文本文件转换为python中的列表?

时间:2017-06-27 17:20:19

标签: python list file text

我当前的文本文件如下:

1DEC     S1    1   2.192   2.811   1.924
2DEC     S1    4   3.686   3.143   3.151
3DEC     S1    7   3.622   2.211   3.252
4DEC     S1   10   3.697   3.401   2.558
5DEC     S1   13   1.921   2.136   2.711

我想将其转换为每行只包含最后3个数字的列表,例如:

[2.192, 2.811, 1.924, 3.686, 3.143, 3.151, 3.622, 2.211, 3.252, 3.697, 3.401 2.558, 1.921, 2.136, 2.711]

谢谢!

3 个答案:

答案 0 :(得分:2)

Numpy有一种简单的方法可以做到这一点。

import numpy as np
a,b = np.loadtxt('FILE LOCATION',usecols=('Column Number with 0 being 
first', unpack=True)

在这种情况下,a和b应分别为您提供列的列表。 例如,如果您想使用第4或第5列,您可以说usecols =(5,6)等等。由于您不需要带有字符串的列,因此不需要执行其他步骤。

答案 1 :(得分:1)

以下是使用list-comprehension的单行内容:

with open('test.txt.', 'r') as f:
    print [float(x) for line in f for x in line.split()[3:]]

输出:

[2.192, 2.811, 1.924, 3.686, 3.143, 3.151, 3.622, 2.211, 3.252, 3.697, 3.401, 2.558, 1.921, 2.136, 2.711]

答案 2 :(得分:0)

你可以试试这个:

from itertools import chain

f = open('filename.txt').readlines()

f = [i.strip('\n').split() for i in f]

new_vals = list(chain(*[map(float, i[3:]) for i in f]))

输出:

[2.192, 2.811, 1.924, 3.686, 3.143, 3.151, 3.622, 2.211, 3.252, 3.697, 3.401, 2.558, 1.921, 2.136, 2.711]