2016-05-13 24 views
-1

Ich habe in meinem Code gestapelt, ich möchte von diesem Code Datei öffnen, die bereits mit sehr großem Text (inputt) existiert, lesen Sie es und wenn die Zeile enthält "***" dann kopiere Zeilen davor und füge eine andere Datei ein (outputt).Python alle Zeilen vor Zeichenfolge in eine andere Textdatei kopieren

Meine inputt Datei zum Beispiel sieht wie folgt aus:

This is the house 

this is the flower 

this is a tree 

'***' 

This is a car 

this is an apple 

this is the nature 

'***' 

Also mein Ziel ist es, alle Zeilen vor „***“ zu kopieren und in einer anderen Datei einfügen. So kann es in zwei Dateien aufgeteilt werden. Hier ist mein Stacked-Code:

def transform(inputt, outputt): 
    with open(inputt) as f, open(outputt, "w") as f1: 
     count = 0 
     for line in f: 
      if "***" in line: 
       f.writelines(deque(f1, count)) 
      else: 
       count = count + 1 

Antwort

0

Es ist nicht wirklich klar, was Sie zu erreichen versuchen. Angesichts Ihrer Beschreibung und der Beispieleingabedatei klingt es so, als würden Sie Folgendes schreiben wollen:

Ist das korrekt? Wenn ja:

def transform(inputt, outputt): 
    with open(inputt) as f, open(outputt, "w") as f1: 
     f1.write(f.read().split("***")[0]) 

hat dieser Code eine Reihe von Fehlern, aber ohne eine bessere Beschreibung ist es schwer, wirklich wissen, was Sie wollen.

Edit: die Antwort in den Kommentaren Gegeben:

def transform(inputt, outputt_base): 
    with open(inputt, "r") as f: 
     for count, block in enumerate(f.read().split("***")): 
      outputt_name = outputt_base + "_{0}.txt".format(count) 
      with open(outputt_name, "w") as f1: 
       f1.write(block) 

Ihre Beispiel Eingabedatei gegeben, diese beiden Ausgabedateien schreiben würde: (outputt_base Unter der Annahme, nur die Zeichenfolge output)

erste Datei : output_1.txt

This is the house 

this is the flower 

this is a tree 

und

Zweite Datei: output_2.txt

This is a car 

this is an apple 

this is the nature 
+0

Das ist richtig! Sorry für eine schlechte Erklärung. Aber ich brauche für jeden dieser "Blöcke" eine andere Textdatei. Weil es viel mehr *** im Text gibt. Also sollte die for-Schleife starten und nachdem *** gefunden wurde, in die erste Datei einfügen, nach der Start-Schleife erneut und schreibt den zweiten Block in eine andere Datei, bis keine *** in der Textdatei vorhanden ist. Kannst du das verstehen? Vielen Dank! – Ukii

+0

Bearbeitete die Antwort mit ausführlicherem Code. –

+0

Das funktioniert wirklich! Danke, ich habe so etwas wie dein Edit geschrieben, indem ich viele Skripte habe, weil ich neu bei Python bin. Danke, du hast mir wirklich geholfen! – Ukii