Bereinigen einer Datei mit Split funktioniert nicht korrekt

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
Raggi
User
Beiträge: 12
Registriert: Donnerstag 6. März 2008, 23:29

hallo,
ich möche eine Datei öffnen (f) und Strings verändern, die teilweise Werte haben wie:
auto.auto.18/18

das soll geändert werden zu (im outfile):
auto.auto.18

Meine Frage: wieso löscht mein Skript zu viele Werte heraus? Die Textdatei hat nun entschieden zu wenig Zeilen

Code: Alles auswählen

#!/usr/bin/env python
import sys

f =open ("dirtylist.txt", 'r')
outfile=open("cleanlist.txt", 'w')

for line in f.readlines():
    if str(line).find('/') > 0:
        linearray = line.split('/')
        outfile.write(linearray[0]+"\n")
outfile.write(line+"\n") 
f.close()
outfile.close()
Dank Euch
R.
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Tja, deine Schleife schreibt halt nur wenn ein Slash im Namen ist. Alle anderen Zeilen schreibt sie nicht ins Outfile. Ganz am Ende schreibt sie dann nochmal die letzte Zeile rein. Wie du siehst, spiele ich auf deine falsche Einrückung in Zeile 12 an. ;)

Probier's mal so:

Code: Alles auswählen

for line in f.readlines():
    if '/' in line:
        line = line.split('/')[0] + '\n'
    outfile.write(line)
Raggi
User
Beiträge: 12
Registriert: Donnerstag 6. März 2008, 23:29

Klasse, das wars :-)

besten Dank!
Antworten