Seite 1 von 1

In Datei suchen, ersetzen oder anfügen

Verfasst: Freitag 13. Januar 2012, 12:59
von logmaster
Hallo zusammen,

ich beiße mir seit gestern die Zähne an folgendem Problem aus: ich möchte den Inhalt einer Datei einlesen und nach Teilstrings (die ich in einer Liste gespeichert habe) suchen. Taucht ein bestimmter String auf möchte ich ihn durch einen bestimmten String (evtl. wieder in einer Liste gespeichert...) ersetzen. Taucht ein String in der GANZEN Datei nicht auf, möchte ich eine Zeile an die Datei anfügen...

Wie stelle ich das am geschicktesten an?

DANKE im Voraus für die Hilfe

Re: In Datei suchen, ersetzen oder anfügen

Verfasst: Freitag 13. Januar 2012, 13:30
von Hyperion
Also ganz grob würde ich mir mal das `re`-Modul angucken und anhand von RegExps die Datei durchsuchen. Evtl. könnte `re.subn` da schon die Lösung sein.

Das Anfügen kannst Du per `"".join()`-Methode realisieren, indem Du die neuen Zeilen einfach in einer Liste vermerkst.

Du kannst letztlich nicht direkt die Datei verändern, sondern musst den Inhalt einlesen, dann die Änderungen durchführen und anschließend die neuen Daten wieder in eine Datei (ggf. die alte überschreiben) schreiben.

Re: In Datei suchen, ersetzen oder anfügen

Verfasst: Freitag 13. Januar 2012, 13:36
von logmaster
Danke für die Antwort! Das werde ich gleich mal machen...

Re: In Datei suchen, ersetzen oder anfügen

Verfasst: Freitag 13. Januar 2012, 13:44
von logmaster
Hm, ich glaube mein größtes Problem ist, dass ich bisher die Datei Zeile für Zeile nach den Strings durchsuche... Findet das Programm den String nicht wird eine Zeile hinzugefügt... Bisher also für jede Zeile, in der der String nicht gefunden wird. Das möchte ich natürlich nicht. Die Zeile soll erst hinzugefügt werden, wenn das Programm am Ende der Datei angekommen ist und in der gesamten Datei den String nicht gefunden hat :K

Re: In Datei suchen, ersetzen oder anfügen

Verfasst: Freitag 13. Januar 2012, 13:48
von Hyperion
Bisher wurde ja nicht erwähnt, dass Du Zeilenweise vorgehen kannst...

Aber ich schrieb ja schon die Lösung: Merke Dir die hinzuzufügenden Zeilen in einer separaten Liste. Ganz am Schluss kannst Du die dann an die Datei anfügen.

Re: In Datei suchen, ersetzen oder anfügen

Verfasst: Freitag 13. Januar 2012, 13:51
von /me
logmaster hat geschrieben:Die Zeile soll erst hinzugefügt werden, wenn das Programm am Ende der Datei angekommen ist und in der gesamten Datei den String nicht gefunden hat :K
Die Lösung ist einfach. Verwende einen Wachhund. :D

Setze vor der Schleife "value_found = False". Findest du in der Schleife einen passenden Wert, dann setze "value_found = True". Nach der Schleife kannst du dann "if not value_found:" bei Bedarf den String hinzufügen.

Re: In Datei suchen, ersetzen oder anfügen

Verfasst: Freitag 13. Januar 2012, 14:33
von logmaster
/me hat geschrieben:
logmaster hat geschrieben:Die Zeile soll erst hinzugefügt werden, wenn das Programm am Ende der Datei angekommen ist und in der gesamten Datei den String nicht gefunden hat :K
Die Lösung ist einfach. Verwende einen Wachhund. :D

Setze vor der Schleife "value_found = False". Findest du in der Schleife einen passenden Wert, dann setze "value_found = True". Nach der Schleife kannst du dann "if not value_found:" bei Bedarf den String hinzufügen.
Jaaaa, super. Das hat funktioniert!!!

DANKE

Re: In Datei suchen, ersetzen oder anfügen

Verfasst: Freitag 13. Januar 2012, 14:36
von Hyperion
logmaster hat geschrieben: Jaaaa, super. Das hat funktioniert!!!
Hast Du jetzt "n" solche Flags? Wenn ja, wie speicherst Du die? Oder gehst Du die Datei "n" mal durch?

Re: In Datei suchen, ersetzen oder anfügen

Verfasst: Freitag 13. Januar 2012, 15:44
von /me
Hyperion hat geschrieben:Hast Du jetzt "n" solche Flags? Wenn ja, wie speicherst Du die? Oder gehst Du die Datei "n" mal durch?
Wenn ich das richtig verstanden habe kommt es bei der Aufgabe doch nur darauf an, ob überhaupt irgendeiner der Ausdrücke passt. Damit reicht dann ein Flag.

Re: In Datei suchen, ersetzen oder anfügen

Verfasst: Freitag 13. Januar 2012, 15:50
von Hyperion
/me hat geschrieben: Wenn ich das richtig verstanden habe kommt es bei der Aufgabe doch nur darauf an, ob überhaupt irgendeiner der Ausdrücke passt. Damit reicht dann ein Flag.
Ok, das habe ich anders verstanden - ansonsten hast Du natürlich recht.

Re: In Datei suchen, ersetzen oder anfügen

Verfasst: Dienstag 4. September 2012, 16:14
von Mattversuchts
Gibt es inzwischen dafür eine Lösung?
evtl. mit Code?!
:)

Re: In Datei suchen, ersetzen oder anfügen

Verfasst: Dienstag 4. September 2012, 17:56
von /me
Mattversuchts hat geschrieben:Gibt es inzwischen dafür eine Lösung?
Ja klar. Der oben erwähnte "Wachhund". Welche Schwierigkeiten hast du denn konkret damit?