Я читаю в CSV-файле на Python, изменяю несколько значений и выписываю их обратно. Я прочитал в файле, используя:
bomReader = csv.reader( open( args.filename, 'rb' ), delimiter=',' )
for row in bomReader:
#do stuff
Одно из полей содержит такие значения, как 0406
, где важен начальный ноль. После прочтения файла CSV, если я распечатаю это поле с помощью, скажем, print row[2]
, оно отображается правильно с начальным 0.
Когда я записываю это обратно в мой новый CSV-файл, вывод не имеет начального нуля. Я предполагаю, что это потому, что он считается int, а ведущий ноль обрезается. Поскольку я не могу использовать спецификаторы формата в функции writeRow () csv.writer, как правильно предотвратить такое поведение?
Код:
bomReader = csv.reader( open( args.filename, 'rb' ), delimiter=',' )
bomWriter = csv.writer(open(outfile, 'wb'), delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL)
for row in bomReader:
try:
qty = int(row[3])
if (qty > 0):
cs = row[4].split(';')
for each in cs:
bomWriter.writerow([row[0],row[1], row[2],'1',each.strip(),row[5],row[6],row[7],row[8],row[9]])
elif (qty == 0):
print "Deleted line"
else:
bomWriter.writerow(row)
except ValueError:
bomWriter.writerow(row)
Пример строки из входного CSV-файла:
1007,C,0406,2,C456;C219,ANY,,,,,,
Строки в выходном CSV-файле:
1007,C,406,1,C456,ANY,,,,
1007,C,406,1,C219,ANY,,,,