[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Zeilen zwischen 2 Wörtern löschen



Schnell und einfach per Python:

<script>

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
#  replace.py
#

original_Str = "Abschnitt 1 \nWort1 blabla Wort2\nAbschnitt 2\nWort1
blabla Wort2\nAbschnitt 3\nWort1 blabla Wort2"
print(original_Str)
# str.replace(strVariable, old, new[, count])
replacedStr1 = str.replace(original_Str, "Wort1 ", "")
replacedStr2 = str.replace(replacedStr1, "Wort2", "")
print(replacedStr2)

</>

sollte das ergeben was Du dir vorstellst.

und es geht bestimmt noch einfacher zum Schreiben :-)

Gruß
Manfred


Danke für alle Ideen. Damit muss ich mich aber erst mal
auseinandersetzen. Bei Bedarf melde ich mich dann wieder.

Guten Rutsch

Klaus

Hallo Klaus!

Wenn du die Regexp-Manpage von Python liest,

https://docs.python.org/3/library/re.html

findest du da den Unterschied zwischen "greedy"=sucht einen möglichst
großen Treffer und "non-greedy"=sucht den minimalen Treffer.

Vielleicht ist es das, dass du nur <Start>.*?<Stop> (non-greedy "all
characters") im DOTALL-Modus (DOT matcht auch Newline) durch einen
Leerstring ersetzen musst?


Irgendwas wie

import re

with open(myfile) as f:

    data = f.read()

    newdata = re.sub("<Startword>.*?<Stopword>", "", data, flags=re.DOTALL)

    with open(outfile, "w") as f2:

        f2.write(newdata)

irgendwie so, ungetestet.

Ich denke, wenn dir Python nicht liegt, werden die regular expressions
in deinem Lieblingssystem vielleicht Äquivalente zu DOTALL und non-greed
match haben.


Hope that helps

Hartmut



Reply to: