Hi!
Hier mein Problem:
Ich möchte eine csv-Datei einlesen und nach einer bestimmten Spalte suchen, die "0" enthält. Wenn das der Fall ist, soll die komplette Zeile in der die 0 steht gelöscht werden.
Kann ich dann überhaupt mit 'readlines' einlesen? und wie heisst der Befehl für spaltenweise einlesen?
Dann müsste ich ja mit lines.remove weiterkommen
Hat da jemand einen Tipp?
Löschen von Zeilen in einer Datei
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi!Gast hat geschrieben: Ich möchte eine csv-Datei einlesen und nach einer bestimmten Spalte suchen, die "0" enthält. Wenn das der Fall ist, soll die komplette Zeile in der die 0 steht gelöscht werden.
Ich würde das mit dem csv-Modul versuchen. Das erkennt automatisch die Struktur der CSV-Datei und kann durch die einzelnen Zeilen iterieren.
Code: Alles auswählen
import csv
quellname = "quelle.csv"
zielname = "ziel.csv"
# Demoquelle erstellen
file(quellname, "w").writelines(
[
"a;b;c;d\n",
"0;1;2;3\n",
"4;5;6;7\n",
"8;9;10;11\n"
]
)
# Struktur sniffen
quelldatei = file(quellname, "rb")
sn = csv.Sniffer()
dialect = sn.sniff(quelldatei.readline())
quelldatei.close()
# Ziel vorbereiten
zieldatei = file(zielname, "wb")
writer = csv.writer(zieldatei, dialect = dialect)
# Auslesen und in Zieldatei schreiben
quelldatei = file(quellname, "rb")
for line in csv.reader(quelldatei, dialect = dialect):
if line[0] <> "0":
writer.writerow(line)
quelldatei.close()
zieldatei.close()
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
nochmal was:
Es sollen die Spalten abhängig von der Überschrift durchsucht werden, also: Suche nach der Spalte mit der Überschrift 'a' und kontrolliere diese dann auf den Inhalt '0'.
Mit einer zweiten Bedingung: if---and kriege ich das irgendwie nicht unter...
Es sollen die Spalten abhängig von der Überschrift durchsucht werden, also: Suche nach der Spalte mit der Überschrift 'a' und kontrolliere diese dann auf den Inhalt '0'.
Mit einer zweiten Bedingung: if---and kriege ich das irgendwie nicht unter...
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Es wird Zeit, Python zu lernenGast hat geschrieben:nochmal was:
Es sollen die Spalten abhängig von der Überschrift durchsucht werden, also: Suche nach der Spalte mit der Überschrift 'a' und kontrolliere diese dann auf den Inhalt '0'.
Mit einer zweiten Bedingung: if---and kriege ich das irgendwie nicht unter...
Code: Alles auswählen
# Auslesen und in Zieldatei schreiben
quelldatei = file(quellname, "rb")
position = None
for line in csv.reader(quelldatei, dialect = dialect):
if position == None:
position = line.index("a")
if line[position] <> "0":
writer.writerow(line)
quelldatei.close()
zieldatei.close()
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ich habe den Thread tatsächlich mal geteilt, für alle die sich weiter beteiligen wollen, habe ich den Thread Die Zukunft von Python eröffnet.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice