Hallo,
ich probiere jetzt seit 5 Stunden herum und komme einfach nicht weiter.
Programmiersprache ist Python.
Es gibt Logdateien mit unbestimmer Anzahl an Einträgen.
1 | 1300105811 Datei7 test0 test10
|
2 | 1300107321 Datei7 test1 test9
|
3 | 1300108129 Datei7 test2 test8
|
4 | 1300107162 Datei7 test3 test7
|
5 | 1300105515 Datei7 test4 test6
|
6 | 1300106386 Datei7 test5 test5
|
7 | 1300106818 Datei7 test6 test4
|
8 | 1300106542 Datei7 test7 test3
|
9 | 1300106770 Datei7 test8 test2
|
10 | 1300105745 Datei7 test9 test1
|
Die sehen alle in etwa so aus. Grundsätzlich ist der Aufbau so, dass
es verschiedene Felder gibt, die durch \t getrennt sind. Wenn ein neuer
Eintrag kommt, erkennt man das an \t\n. Es ist möglich, dass ein Eintrag
sich über mehrere Zeilen erstreckt. Das heißt, dass in einem Eintrag in
einem Feld ein \n vorkommen kann. Das kann jedoch niemals am Anfang
eines Feldes geschehen.
So, mein Problem ist jetzt das Auslesen dieser Datei.
Meine Versuche reichen von
1 | compiled_regex = re.compile(r"(([^\t]+?\t)+?\n)+?", re.MULTILINE)
|
über
1 | compiled_regex = re.compile(r"((\S+?\t)+?\n)+?", re.MULTILINE)
|
usw...
Keine der Versionen funktioniert wie erwartet! Ich erhalte immer nur ein
Feld zurück, außer ich mache das so:
1 | compiled_regex = re.compile(r"((\S+?\t)(\S+?\t)\n)+?", re.MULTILINE)
|
Dann erhalte ich zwei Felder.
Die Anzahl der Felder ist aber dynamisch! Ich suche also einen Regex,
mit dem ich ALLE Felder (zw. 1 und 50) in ALLEN Einträgen ermitteln
kann.
ich komme jedenfalls nicht mehr weiter.
Habt ihr eine Idee?