Ответ 1
Вы очень близки; в настоящее время вы сравниваете row[2]
с целым числом 0
, сравниваете со строкой "0"
. Когда вы читаете данные из файла, это строка, а не целое число, поэтому поэтому проверка целостности в настоящее время не выполняется:
row[2]!="0":
Кроме того, вы можете использовать ключевое слово with
, чтобы сделать текущий код немного более питоническим, чтобы строки в вашем коде были уменьшены, и вы можете опустить инструкции .close
:
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)
Обратите внимание, что input
является встроенным Python, поэтому вместо этого я использовал другое имя переменной.
Изменить. Значения в строках файла csv разделяются запятой и пробелом; В обычном csv они будут просто разделены запятыми, и проверка на "0"
будет работать, поэтому вы можете либо использовать strip(row[2]) != 0
, либо проверить на " 0"
.
Лучшим решением было бы исправить формат csv, но в случае, если вы хотите сохранить текущую версию, следующее будет работать с данным форматом csv:
$ 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