Seite 1 von 1

in textfile kopieren von keyword bis keyword

Verfasst: Donnerstag 10. September 2015, 12:12
von gerald123
Hallo,

gibt es eine einfache Möglichkeit in Python, in einem Textfile den Inhalt zwischen zwei eindeutigen Keywords zu kopieren?
Danke und beste Grüße

Re: in textfile kopieren von keyword bis keyword

Verfasst: Donnerstag 10. September 2015, 12:19
von Sirius3
@gerald123: ja. Was hast Du bisher versucht?

Re: in textfile kopieren von keyword bis keyword

Verfasst: Donnerstag 10. September 2015, 13:32
von gerald123
Hey,

folgendes habe ich versucht:

Code: Alles auswählen

with open('copyKeyword.txt','r') as openfile:
    with open('writeKeyword.txt', 'w') as writefile:
      for line in openfile:
          if line.startswith('#key'):
              for line in openfile:
                  if not line.startswith('#key'):
                      writefile.write(line)

Re: in textfile kopieren von keyword bis keyword

Verfasst: Donnerstag 10. September 2015, 14:27
von Sirius3
@gerald123: und was ist jetzt Dein Problem?

Re: in textfile kopieren von keyword bis keyword

Verfasst: Donnerstag 10. September 2015, 15:11
von gerald123
funktioniert so leider nicht - und jetzt wärs hilfreich zu wissen a) warum der code nicht funktionert und b) ob es vielleicht eine elegantere Möglichkeit gibt :)

Re: in textfile kopieren von keyword bis keyword

Verfasst: Donnerstag 10. September 2015, 15:21
von cofi
Wilkommen im Forum!

Die Annahme ist (nach dem Threadtitel, anders als nach dem Code), dass deine Keywords in einer eigenen Zeile stehen und du den Bereich dazwischen kopieren willst.

Code: Alles auswählen

with open('copyKeyword.txt','r') as openfile, open('writeKeyword.txt', 'w') as writefile:
    copy = False
    for line in openfile:
         if line.startswith("#key"):
             copy = not copy
         elif copy:
             writefile.write(line)

Re: in textfile kopieren von keyword bis keyword

Verfasst: Donnerstag 10. September 2015, 15:22
von Kebap
Was bedeutet denn "funktioniert so leider nicht"? Gibt es eine Fehlermeldung? Zeige mal beispielhafte Input & Output.

Steht denn "#key" überhaupt am Anfang einer Zeile in copyKeyword.txt?

Re: in textfile kopieren von keyword bis keyword

Verfasst: Donnerstag 10. September 2015, 15:56
von gerald123
Hey,
vielen Dank erstmal (ich bin kompletter Anfänger in Pyhton :) ).
Das Keywort #key steht am Anfang der Zeile.
Der code funktioniert so auch - aber ganz klar ist mir nicht was da passiert:

- copy wird auf boolean False gesetzt
- for loop über lines im file
- wenn line mit #key beginnt dann wird copy auf TRUE gesetzt
- wenn line nicht mit #key beginnt --> write.
--> sprich: sobald erstes Keyword im textFile --> write(line)

Frage: Warum wird in dem Beispiel:

Code: Alles auswählen

1, 2, 3, 4
#keyword1
3, 4, 5, 6
2, 3, 4, 5
#keyword2
4, 5, 6 ,7 
die erste Zeile nicht in das file "writefile" geschrieben?

Re: in textfile kopieren von keyword bis keyword

Verfasst: Donnerstag 10. September 2015, 16:11
von BlackJack
@gerald123: Die erste Zeile wird nicht kopiert weil `copy` am Anfang mit `False` initialisiert wird.

Vorsicht übrigens: Wenn noch weitere Zeilen mit '#key' beginnen sollten, dann wird auch das zwischen diesen Zeilen kopiert werden. Keine Ahnung ob das gewünscht ist oder zu problemen führen kann.

Re: in textfile kopieren von keyword bis keyword

Verfasst: Donnerstag 10. September 2015, 17:33
von cofi
Der Code hat 2 Modi: 1. Nicht kopieren und 2. Kopieren. Jedes mal wenn das Schluesselwort gelesen wird, wird der Modus gewechselt.

Die erste Zeile wird demnach nicht kopiert, weil du laut Anforderung ja den Bereich _zwischen_ den Schluesselwoertern kopieren wolltest.

Re: in textfile kopieren von keyword bis keyword

Verfasst: Donnerstag 10. September 2015, 17:39
von BlackJack
@cofi: Wobei die Anforderung natürlich interpretierungsfähig ist. Also genau dann wenn das Schlüsselwort mehr als zweimal vorkommt. Das müsste der OP vielleicht nochmal näher ausführen. Ob dann nur der erste Block berücksichtigt werden soll, oder alle Zeilen zwischen dem ersten und dem letzten Vorkommen in der Datei, oder ob bei jedem Schlüsselwort das Flag gewechselt werden soll, und was passieren soll wenn eine ungerade Anzahl von Schlüsselworten vorkommt.

Re: in textfile kopieren von keyword bis keyword

Verfasst: Donnerstag 10. September 2015, 18:37
von cofi
Das ist wohl wahr, aber in auch dann wuerde die erste Zeile nie kopiert werden :) Aber bisher konnte uns der OP noch nicht sagen, was er denn tatsaechlich genau haben moechte.