Итак, я имею дело с CSV-файлом, в котором отсутствуют значения.
То, что я хочу, чтобы мой сценарий:
#!/usr/bin/python
import csv
import sys
#1. Place each record of a file in a list.
#2. Iterate thru each element of the list and get its length.
#3. If the length is less than one replace with value x.
reader = csv.reader(open(sys.argv[1], "rb"))
for row in reader:
for x in row[:]:
if len(x)< 1:
x = 0
print x
print row
Вот пример данных, я их примеряю, в идеале он должен работать на любой длине столбца
Before:
actnum,col2,col4
xxxxx , ,
xxxxx , 845 ,
xxxxx , ,545
After
actnum,col2,col4
xxxxx , 0 , 0
xxxxx , 845, 0
xxxxx , 0 ,545
Любое руководство будет оценено.
Обновление Вот что у меня сейчас (спасибо):
reader = csv.reader(open(sys.argv[1], "rb"))
for row in reader:
for i, x in enumerate(row):
if len(x)< 1:
x = row[i] = 0
print row
Тем не менее, кажется, что только одна запись выходит, я буду выводить вывод в новый файл в командной строке.
Обновление 3: Хорошо, теперь у меня возникла противоположная проблема, я вывожу дубликаты каждой записи.
Почему это происходит?
After
actnum,col2,col4
actnum,col2,col4
xxxxx , 0 , 0
xxxxx , 0 , 0
xxxxx , 845, 0
xxxxx , 845, 0
xxxxx , 0 ,545
xxxxx , 0 ,545
Хорошо, я исправил это (ниже), спасибо вам, ребята, за вашу помощь.
#!/usr/bin/python
import csv
import sys
#1. Place each record of a file in a list.
#2. Iterate thru each element of the list and get its length.
#3. If the length is less than one replace with value x.
reader = csv.reader(open(sys.argv[1], "rb"))
for row in reader:
for i, x in enumerate(row):
if len(x)< 1:
x = row[i] = 0
print ','.join(str(x) for x in row)