liste schneiden und aus dieser eine weitere liste erstellen?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
HansWurst1
User
Beiträge: 2
Registriert: Freitag 5. Februar 2016, 08:21

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.
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

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]
the more they change the more they stay the same
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

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:]
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

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