Regex-Gruppen

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.
BlackJack

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.
beertonic
User
Beiträge: 37
Registriert: Montag 8. Mai 2017, 15:26

Ich habe weiter oben auch schon eine präzisere Version mit named groups gepostet.
Taadu
User
Beiträge: 7
Registriert: Donnerstag 11. Mai 2017, 10:40

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

Code: Alles auswählen

        ausgabe = (zeile +zeile)
hat er "ausgabe" nur immer mit der neusten "Wert" überschrieben
beertonic
User
Beiträge: 37
Registriert: Montag 8. Mai 2017, 15:26

Nimm eine Liste

Code: Alles auswählen

liste.append(zeile+zeile)
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
BlackJack

@Taadu: Sammel die Daten doch einfach in einer Liste. Oder schreibe sie vor bzw. nach den anderen Zeilen in die Textdatei.
BlackJack

@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.
Taadu
User
Beiträge: 7
Registriert: Donnerstag 11. Mai 2017, 10:40

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.
BlackJack

@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.
beertonic
User
Beiträge: 37
Registriert: Montag 8. Mai 2017, 15:26

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