Regex-Gruppen
Ich würde beertonic da zustimmen. Insbesondere da wir ja jetzt auch wissen das dort durchaus Zeilen vorkommen die nicht dem Muster entsprechen, würde ich sicherstellen wollen das es nicht so leicht passieren kann, dass man Zeilen matcht die man gar nicht haben möchte weil das Suchmuster so/zu unscharf formuliert ist. Ausserdem würde ich „named groups“ mindestens für die Teilausdrücke verwenden, die für die Auswertung interessant sind. Das macht den Code verständlicher als irgendwelche magischen Indexzahlen.
Danke für die Hilfreichen Tipps, jedoch habe eine Frage, die nicht mehr viel mit Regex zu tun hat, ich frage mich gerade, ob es möglich ist eine Variable wie eine Textdatei zu beschreiben also vom Aufbau her. Ich habe nämlich das problem, das ich eine bestimmte Zeilenstruktur nur am Ende bzw. Anfang ausgeben will, also muss ich sie vorher irgendiwe zwischenspeichern (möglicherweise in einer Liste?), erst wollte ich mit Hilfe eines Zählers automatisch immer neue Variablen erstellen lassen, um diese dann am Ende in die Textdatei schreiben zu lassen, dann habe ich hier im Forum aber gelesen das dies vermieden werden sollte, vielleicht hat auch hier jemand einen Vorschlag für mich.
Mit einem solchen versuch
hat er "ausgabe" nur immer mit der neusten "Wert" überschrieben
Mit einem solchen versuch
Code: Alles auswählen
ausgabe = (zeile +zeile)
Nimm eine Liste
Wenn du Variablen bis zum nächsten Programmaufruf speichern willst kannst du das mit pickle machen, oder einfach in eine Datei schreiben.
http://www.python-kurs.eu/dateien.php
Code: Alles auswählen
liste.append(zeile+zeile)
http://www.python-kurs.eu/dateien.php
@Taadu: Sammel die Daten doch einfach in einer Liste. Oder schreibe sie vor bzw. nach den anderen Zeilen in die Textdatei.
@beertonic: Besser zu Seiten verlinken die das Picklen richtig machen: Das muss eine Binärdatei sein, sonst kann man das wenn man Pech hat, nur mit dem System lesen mit dem es auch geschrieben wurde.
Das Beispiel mit dem schreiben in eine Datei mit manuellem hochzählen von `i` und `str()` und ``+`` um die Ausgabezeile zusammen zu setzen ist auch unschön.
Das Beispiel mit dem schreiben in eine Datei mit manuellem hochzählen von `i` und `str()` und ``+`` um die Ausgabezeile zusammen zu setzen ist auch unschön.
Ich Analysiere mit Hilfe des Codes eine Logdatei, und habe mithilfe meines Codes inzwischen die Möglichkeit die auf meine Regex passenden Zeilen wieder so wie sie sind (oder auch anders Gruppiert) in eine Datei zu schreiben, jedoch will ich die vom Regex nicht abgedeckten bzw. abweichenden Zeilen am Anfang bzw. ende der Datei gesondert geschrieben haben, deshalb sehe ich nur die Möglichkeit, die abweichenden Zeilen die während meiner for Zeilen in Daten: durchgearbeitet wurden, irgendwie zwischenzuspeichern, um sie am Ende gesondert in die Datei zu schreiben. Jedoch stehe ich da vor einem Problem, denn die Variable "Zeile" ist ein String und kann, wenn ich das richtig verstehe nicht ohne weiteres einer liste hinzugefügt werden, möglicherweise mache ich dabei grundlegende Anfängerfehler, deshalb,
danke für die Geduld.
danke für die Geduld.
@Taadu: In Listen kann man völlig beliebige Objekte jedweden Typs stecken. Auch gemischte Typen — obwohl man das eher nicht machen sollte, weil das in der Regel dann zu mehr und komplizierterem Code führt wenn man anfangen muss anhand des Typs zu entscheiden wie ein Wert behandelt werden muss. Das ist ein klares „anti pattern“ in der objektorientierten Programmierung.
Ich würde das Zeile für Zeile mit Regex durchsuchen, und Zeile+'\n' an einen string anhängen wenn es keinen match gibt. Dann kannst du den reststring wieder in einer Datei speichern, und bei Bedarf wieder Zeile für Zeile durchsuchen.