2017-05-31 5 views
-1

Ich habe eine Textdatei mit einigen Wörtern in einer separaten Zeile. Wie kann ich eine neue Textdatei erstellen, die alle 2 oder 3 oder X Zeilen/Wörter aus der Originaldatei in eine Zeile einfügt?Bearbeiten von Zeilen in einer Textdatei mit Python

Zum Beispiel, hier ist der Eingang:

one 

two 

three 

four 

five 

six 

seven 

eight 

Und die Ausgabe, was ich will:

one two 

three four 

five six 

seven eight 
+0

Können Sie beschreiben, welche Probleme Sie haben? Im Allgemeinen würden Sie den Inhalt der Textdatei lesen, die Zeilen erhalten, die Sie multiplizieren möchten (wie auch immer Sie das bestimmen) und dann alles in eine neue Datei schreiben. Wo genau stecken Sie fest? Datei lesen, Datei schreiben? – Lomtrur

+0

Und was ist das erwartete Verhalten, wenn es nicht genug Zeilen gibt? Zum Beispiel hat Ihre Datei "One Two Three" als Zeilen, die Sie alle zwei Zeilen kombinieren möchten. Was passiert mit den "Dreien"? – Lomtrur

+1

Eine Übersicht über eine Lösung: Lesen Sie alle Wörter in eine Liste, nehmen Sie dann wiederholt _n_ Wörter aus der Liste und schreiben Sie sie in dieselbe Zeile der Ausgabedatei, bis Ihnen die Wörter ausgehen. Verwenden Sie die Tatsache, dass 'x [pos: pos + n]' eine Unterliste der Liste 'x' ab der Position' pos' zurückgibt, nicht mehr als 'n' Elemente lang. – 9000

Antwort

0

schrieb ich habe das Sie beginnen ausgeschaltet. Es liest die erste Datei 'input.txt' und schreibt dann eine bestimmte Anzahl von Zeilen in die neue Datei 'new.txt'.

lines_to_write = 5 #amount of lines to write from old file to new 

with open('input.txt') as f: 
    data = f.readlines() 

with open('new.txt', 'w') as f: 
    for x in range(lines_to_write): 
     f.write(data[x]) 

Dies zeigt, wie Dateien zu manipulieren, und sollte eine gute Grundlage für Sie starten.

0

Es scheint, als ob Sie eine variable Anzahl von Zeilen in eine Zeile schreiben möchten. Also schrieb ich ein Listenverständnis auf, das eine variable Anzahl von Zeilen kombiniert.

with open("in.txt","r") as fi, open("out.txt","w") as fo: 
    li = fi.readlines() 
    inBetween = 2 
    fo.write("\n".join(" ".join(line.strip() for line in li[i:i+inBetween]) for i in range(0,len(li),inBetween))) 
0

jede zweite Zeile:

for x in xrange(len(v.splitlines())): 
    if x%2 == 0: 
     print " ".join(v.splitlines()[x:x+2]) 

jede dritte Zeile:

for x in xrange(len(v.splitlines())): 
    if x%3 == 0: 
     print " ".join(v.splitlines()[x:x+3] 

kürzer:

[ " ".join(v.splitlines()[x:x+2]) for x in xrange(len(v.splitlines())) if x%2 == 0 ] 
[ " ".join(v.splitlines()[x:x+3]) for x in xrange(len(v.splitlines())) if x%3 == 0 ] 

und so weiter ...

Verwandte Themen