Seite 1 von 1

liste schneiden und aus dieser eine weitere liste erstellen?

Verfasst: Freitag 5. Februar 2016, 08:25
von HansWurst1
Guten Morgen,
ich habe eine .txt datei welche sinnesgemäß eine solche Struktur aufweist: (Knapp 400 Zeilen)
Datum Uhrzeit Name Baureihenabfolge
01.0.2016 15:30 Max Meyer (Golf7/Golf6)(AudiTT)(Mercedes C Klasse)
nun interessiert mich nur der letzte Teil (Baureihenabfolge).
Der Algorithmus soll nun eine List erstellen mit der Baureihenabfolge, also so:
list 1 = [Golf7/Golf6, Audi TT, Mercedes C Klasse].
Genau das gleiche soll er auch für die nächsten 400 Zeilen machen, dementsprechend also 400 Listen erzeugen.
Danke für die Unterstützung
PS: die einzelnen Daten ( Datum, Uhrzeit, Name etc. ) sind jeweils durch ein Tab getrennt.

Re: liste schneiden und aus dieser eine weitere liste erstellen?

Verfasst: Freitag 5. Februar 2016, 12:01
von Dav1d
Untested:
[Codebox=python file=Unbenannt.txt]with open('data.txt') as f:
print [line.rsplit(None, 1)[1].replace(')', '').split('(') for line in f][/Codebox]

EDIT: Codebox kaputt?

with open('data.txt') as f:
....print [line.rsplit(None, 1)[1].replace(')', '').split('(') for line in f]

Re: liste schneiden und aus dieser eine weitere liste erstellen?

Verfasst: Freitag 5. Februar 2016, 15:02
von snafu
An den öffnenden Klammern splitten und den am weitesten links stehenden Split ignorieren sowie vorab alle schließenden Klammern entfernen.

Sieht dann so aus:

Code: Alles auswählen

s = '01.0.2016 15:30 Max Meyer (Golf7/Golf6)(AudiTT)(Mercedes C Klasse)'
s.replace(')', '').split('(')[1:]

Re: liste schneiden und aus dieser eine weitere liste erstellen?

Verfasst: Freitag 5. Februar 2016, 15:06
von snafu
HansWurst1 hat geschrieben:PS: die einzelnen Daten ( Datum, Uhrzeit, Name etc. ) sind jeweils durch ein Tab getrennt.
Wenn du ganz sicher sein willst, dann nutze den `csv.reader` mit "\t" als Trenner und wende dann das Splitten der Klammern auf die letzte Spalte an.

Ungetestet:

Code: Alles auswählen

import csv
import itertools

def get_model_lists(source_filename):
    with open(source_filename) as infile:
        for row in csv.reader(infile, delimiter='\t'):
            yield row[-1].replace(')', '').split('(')[1:]

if __name__ == '__main__':
    model_lists = get_model_lists(dein_dateiname)
    chunk = list(itertools.islice(model_lists, 10))
    print(chunk)