2017-06-27 6 views
-1

Meine aktuelle Textdatei wie folgt aussieht:Wie konvertiere ich eine Textdatei in eine Liste in 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 

usw.

ich es in eine Liste mit nur den letzten drei Zahlen in jeder Zeile konvertieren möchte, wie:

[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] 

Danke!

+0

poste deinen aktuellen Code – RomanPerekhrest

+0

was hast du bisher probiert? –

+0

Ich bin sehr neu Python, so dass ich nicht wirklich Fortschritte machen konnte. Ich dachte, dass diese Frage zu spezifisch wäre, um beantwortet zu werden. –

Antwort

2

Numpy hat eine einfache Möglichkeit, dies zu tun.

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

In diesem Fall sollten a und b Ihnen Ihre Liste für die Spalten geben. Zum Beispiel, wenn Sie zu 4. oder 5. Spalte verwenden möchten, können Sie usecols = (5,6) usw. sagen und so weiter. Da Sie die Spalte mit den Zeichenfolgen nicht benötigen, sind keine zusätzlichen Schritte erforderlich.

+0

Ich bekomme einen Fehler: "Konnte String nicht in Gleitkomma konvertieren: b'1DEC '" –

+0

Diese Bearbeitung sollte diesen Fehler behoben haben. –

0

Sie können dies versuchen:

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])) 

Ausgang:

[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

Hier ist ein Motto mit list-comprehension:

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

Ausgang:

[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] 
Verwandte Themen