Sie sind sehr nah dran; Derzeit vergleichen Sie die row[2]
mit der ganzen Zahl 0
, machen Sie den Vergleich mit der Zeichenfolge "0"
. Wenn Sie die Daten aus einer Datei lesen, ist es ein String und keine ganze Zahl ist, so dass, warum Check Ihre ganze Zahl ist derzeit nicht:
row[2]!="0":
Sie können aber auch das with
Schlüsselwort verwenden den aktuellen Code zu machen etwas mehr pythonic so dass die Leitungen in Ihrem Code reduziert werden und Sie können die .close
Aussagen auslassen:
import csv
with open('first.csv', 'rb') as inp, open('first_edit.csv', 'wb') as out:
writer = csv.writer(out)
for row in csv.reader(inp):
if row[2] != "0":
writer.writerow(row)
Beachten Sie, dass input
ein Python builtin ist, also habe ich stattdessen einen anderen Variablennamen verwendet.
bearbeiten: Die Werte in der CSV-Datei der Zeilen Komma und Leerzeichen getrennt; In einem normalen CSV, würden sie einfach durch Komma getrennt und eine Prüfung gegen "0"
würde funktionieren, so dass Sie entweder strip(row[2]) != 0
verwenden können, oder überprüfen Sie gegen " 0"
.
Die bessere Lösung wäre, das CSV-Format zu korrigieren, aber falls Sie mit dem aktuellen beharren, die folgenden mit Ihrem angegebenen CSV-Datei-Format arbeiten:
$ cat test.py
import csv
with open('first.csv', 'rb') as inp, open('first_edit.csv', 'wb') as out:
writer = csv.writer(out)
for row in csv.reader(inp):
if row[2] != " 0":
writer.writerow(row)
$ cat first.csv
6.5, 5.4, 0, 320
6.5, 5.4, 1, 320
$ python test.py
$ cat first_edit.csv
6.5, 5.4, 1, 320
Sieht gut zu mir - was ist die Frage? – alfasin