Python Zeilen Schneiden und nur bestimmte werte ausgeben?

1 Antwort

Bei Textdateien bitte IMMER unbedingt auf die Kodierung achten, und möglichst IMMER das "codecs" Modul verwenden:

import codecs

with codecs.open('file.tsv', 'r', 'utf-8') as fh:
for line in fh:
parts = line.strip().split('\t', 6)

if len(parts) != 5:
continue

date, time, name, phone, mail = parts

print('%s %s: %s' % (date, time, mail))

Außerdem ist es effizienter im Bezug auf Speicher, wenn du lesend über die Zeilen iterierst, anstatt sie in einem Rutsch einzulesen.

Viel Spaß! :)

PS: Noch einige Bemerkungen ...

- Der "with-Block" übernimmt am Ende automatisch das Schließen von Dateien. Du musst also nicht extra "close()" aufrufen

- Die for-Schleife iteriert über jede Zeile des Dateihandles.

- Bei Split wird ein Limit von 6 angegeben, obwohl wir 5 Teile erwarten. Das ist eine Vorsichtsmaßnahme gegen DoS-Angriffe, die in diesem Beispiel nicht vorkommen wird, aber es schadet nichts, sich das schon mal anzugewöhnen.

- Bei der Zuweisung einer Collection an mehrere Variablen bitte immer VORHER die Größe überprüfen, sonst bekommst du ein Stack-Trace um die Ohren geworfen :)