Zeilen aus einer Datei strippen?!

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
CrashBandicoot
User
Beiträge: 7
Registriert: Montag 10. Februar 2020, 10:14

Hallo zusammen,

irgendwie hänge ich gerade an einem vermeintlich einfachen Problem.

Ich habe eine Textdatei und möchte diese einlesen, aus jeder Zeile alle Zahlen entfernen und das ganze dann in eine neue Datei schreiben.

Ich habe es mit folgenden Zeilen versucht:

Code: Alles auswählen

with open("withnumbers.txt") as f, open('withoutnumbers.txt', 'w') as output:
    for line in f:
        x = line.strip("0123456789")
        output.write( x)
            
Hiermit wird allerdings lediglich der komplette Inhalt kopiert und nicht gestript, obwohl die Strip-Funktion mit einzelnen Variablen einwandfrei funktioniert.
Dass ich Anfänger bin, brauche ich bei der Frage vermutlich keinem sagen.

Mit .split() habe ich es auch schon versucht, da die Zahlen immer am Ende der Zeile stehen, funktionert allerdings ebenfalls nicht.
Falls es relevant ist, meine Zahlen variieren zwischen ein- und fünfstellig.

Es ist vermutllich selbst für einen Anfänger nicht schwer, aber ich steh auf dem Schlauch.

Danke und Grüße.
nezzcarth
User
Beiträge: 1764
Registriert: Samstag 16. April 2011, 12:47

Das funktioniert nicht, weil die Zeilen mit einem einem Zeilenvorschub bzw. (unter Windows) Wagenrücklauf + Zeilenvorschub enden. Den/die musst du zuerst entfernen, in dem du strip vorher ohne Parameter aufrufst oder die Zeichen in die Auswahl aufnimmst.
CrashBandicoot
User
Beiträge: 7
Registriert: Montag 10. Februar 2020, 10:14

nezzcarth hat geschrieben: Samstag 25. April 2020, 21:51 Das funktioniert nicht, weil die Zeilen mit einem einem Zeilenvorschub bzw. (unter Windows) Wagenrücklauf + Zeilenvorschub enden. Den/die musst du zuerst entfernen, in dem du strip vorher ohne Parameter aufrufst oder die Zeichen in die Auswahl aufnimmst.
Arbeite z.Z. unter Linux.
Habe Strip jetzt ohne Parameter aufgerufen, ändert an der Ausgabe leider noch nichts.

Code: Alles auswählen

    for line in f:
        x = line.strip()
        x = line.strip("0123456789")
        output.write(x)
und auch:

Code: Alles auswählen

x = line.strip('\n\t')
ändert nichts.
nezzcarth
User
Beiträge: 1764
Registriert: Samstag 16. April 2011, 12:47

Naja, so überschreibst du x ja jetzt auch :) Mach daraus z.B.

Code: Alles auswählen

line = line.strip()
CrashBandicoot
User
Beiträge: 7
Registriert: Montag 10. Februar 2020, 10:14

nezzcarth hat geschrieben: Samstag 25. April 2020, 22:13 Naja, so überschreibst du x ja jetzt auch :) Mach daraus z.B.

Code: Alles auswählen

line = line.strip()
Heureka, zumindest halb :)
Die Zahlen sind raus, die Zeilenumbrüche allerdings auch, sprich alles steht direkt am Stück hintereinander :geek:
nezzcarth
User
Beiträge: 1764
Registriert: Samstag 16. April 2011, 12:47

Um einen Zeilenumbruch zu erzeugen, schreibt man für gewöhnlich mit print in eine Datei:

Code: Alles auswählen

print(x, file=output)
CrashBandicoot
User
Beiträge: 7
Registriert: Montag 10. Februar 2020, 10:14

Ich habe es mit

Code: Alles auswählen

output.write(x + "\n")
regeln können.
Danke dir! :)
Antworten