Lesen bestimmter Spalten aus einer Textdatei in Python

7

Ich habe eine Textdatei, die eine Tabelle enthält, die aus Zahlen wie:

besteht
  

5 10 6

     

6 20 1

     

7 30 4

     

8 40 3

     

9 23 1

     

4 13 6

Wenn ich zum Beispiel die Zahlen nur in der zweiten Spalte haben möchte, wie extrahiere ich diese Spalte in eine Liste?

    
Jethro 13.05.2015, 13:37
quelle

4 Antworten

10
%Vor%

Sie können dasselbe mit einem Listenverständnis tun

%Vor%

Dokumente auf split()

  

string.split(s[, sep[, maxsplit]])

     

Gibt eine Liste der Wörter der Zeichenfolge s zurück. Wenn das optionale zweite Argument sep nicht vorhanden oder None ist, werden die Wörter durch willkürliche Zeichenfolgen von Leerzeichen (Leerzeichen, Tabulatoren, Zeilenumbrüche, Zeilenumbrüche, Zeilenumbrüche) getrennt. Wenn das zweite Argument sep vorhanden ist und nicht None, gibt es eine Zeichenfolge an, die als Worttrennzeichen verwendet werden soll. Die zurückgegebene Liste enthält dann ein weiteres Element als die Anzahl der nicht überlappenden Vorkommen des Trennzeichens in der Zeichenfolge.

Sie können also den Platz, den ich benutzt habe, weglassen und nur x.split() machen, aber das wird auch Tabs und Zeilenumbrüche entfernen, seien Sie sich dessen bewusst.

    
ForceBru 13.05.2015, 13:39
quelle
6

Sie haben eine durch Leerzeichen getrennte Datei. Verwenden Sie daher das Modul zum Lesen von Dateien mit begrenzten Werten. csv .

%Vor%

Das Muster zip(*iterable) ist nützlich, um Zeilen in Spalten umzuwandeln oder umgekehrt. Wenn Sie eine Datei zeilenweise lesen ...

%Vor%

... aber Spalten benötigen, können Sie jede Zeile an die Funktion zip übergeben

%Vor%     
Adam Smith 13.05.2015 13:46
quelle
4

Sie können eine zip -Funktion mit einem Listenverständnis verwenden:

%Vor%

Ergebnis:

%Vor%     
Kasramvd 13.05.2015 13:43
quelle
1

Zunächst öffnen wir die Datei und als datafile , dann wenden wir .read() Methode liest den Dateiinhalt und dann teilen wir die Daten, die so etwas wie ['5', '10', '6', '6', '20', '1', '7', '30', '4', '8', '40', '3', '9', '23', '1', '4', '13', '6'] zurückgibt und die wir angewendet Liste Slicing auf dieser Liste zu Beginnen Sie mit dem Element an der Indexposition 1 und überspringen Sie die nächsten 3 Elemente, bis das Ende der Schleife erreicht ist.

%Vor%

Ausgabe:

%Vor%     
ZdaR 13.05.2015 13:43
quelle

Tags und Links