2017-06-27 124 views
-1

我現在的文本文件看起來像:如何將文本文件轉換爲Python中的列表?

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] 

謝謝!

+0

發佈您的當前代碼 – RomanPerekhrest

+0

到目前爲止,您嘗試過了什麼? –

+0

我是非常新的Python,所以我還沒有真正取得任何進展。我想這個問題太具體,不能得到答案。 –

回答

2

Numpy有一個簡單的方法來做到這一點。

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

在這種情況下,a和b應該分別爲您提供列表。 例如,如果你想使用第四或第五列,你可以說usecols =(5,6)等,等等。由於您不需要帶字符串的列,因此不需要額外的步驟。

+0

我收到一個錯誤:「無法將字符串轉換爲float:b'1DEC'」 –

+0

該編輯應該修復該錯誤。 –

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] 
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] 
相關問題