2017-10-04 1 views
-4

Ich versuche ein Python-Programm zu schreiben, das ständig eine Textdatei Zeile für Zeile liest und jedes Mal, wenn es auf eine Zeile mit dem Wort 'SPLIT' stößt, schreibt es den Inhalt in a neue TextdateiPython Splitting Textdatei basierend auf einem Schlüsselwort

Bitte kann mir jemand in die richtige Richtung zeigen eine neue Textdatei zu schreiben jedes Mal, wenn das Skript auf das Wort "Split" stößt. Ich habe kein Problem damit, eine Textdatei mit Python zu lesen. Ich bin mir nicht sicher, wie ich das Schlüsselwort teilen und jedes Mal eine individuelle Textdatei erstellen kann.

THE SCRIPT ARBEITEN UNTER DEM IN 2.7.13

file_counter = 0 
done = False 

with open('test.txt') as input_file: 
    # with open("test"+str(file_counter)+".txt", "w") as out_file: 
    while not done: 
     for line in input_file: 
      if "SPLIT" in line: 
       done = True 
       file_counter += 1 
      else: 
       print(line) 
       out_file = open("test"+str(file_counter)+".txt", "a") 
       out_file.write(line) 
       #out_file.write(line.strip()+"\n") 
       print file_counter 
+2

Was haben Sie bisher versucht? Können Sie Beispieleingabe und erwartete Ausgabe buchen? – alexbclay

+2

Mit welchem ​​Stück brauchst du Hilfe? Das Teilen, die Datei-I/O, das Looping, etwas anderes? Lass uns genauer werden und lass uns sehen, welchen Code du bisher hast – WillardSolutions

Antwort

1

Sie müssen zwei Schleifen haben.

out_n = 0 
done = False 
with open("test.txt") as in_file: 
    while not done: #loop over output file names 
     with open(f"out{out_n}.txt", "w") as out_file: #generate an output file name 
      while not done: #loop over lines in inuput file and write to output file 
       try: 
        line = next(in_file).strip() #strip whitespace for consistency 
       except StopIteration: 
        done = True 
        break 
       if "SPLIT" in line: #more robust than 'if line == "SPLIT\n":' 
        break 
       else: 
        out_file.write(line + '\n') #must add back in newline because we stripped it out earlier 
      out_n += 1 #increment output file name integer 

+0

Danke für deine Antwort Aaron. Ich habe versucht, Ihr Skript zu verwenden, aber ich bekomme einen Fehler in Zeile 8 des Codes in Bezug auf 'TypeError:' str 'Objekt ist kein Iterator' am Anfang des Codes Ich habe input_file = 'test.txt', um meine zu deklarieren Eingabedatei. Wo gehe ich falsch? – user826436

+0

@ user826436 meine schlechte ... Tippfehler behoben .. Sie benötigen das Dateiobjekt als Iterator und ich habe versehentlich die Variable für den Dateipfad eingegeben – Aaron

+0

Aaron, ich konnte nicht Ihr Skript vollständig kompilieren ordnungsgemäß. Ich habe deinen Code angepasst und jetzt habe ich das Problem, dass mein Skript durch jede Zeile meiner Textdatei läuft und es in eine neue Datei schreibt. Wenn es "SPLIT" passiert, hört es einfach auf. Ich brauche es, um eine neue Textdatei zu erstellen und Zeilen zu schreiben, bis es wieder 'SPLIT' erreicht. Vielen Dank für Ihre Hilfe bis jetzt. – user826436

Verwandte Themen