Я пытаюсь преобразовать файл XLSX в CSV. Мой собранный по кусочкам код работает, единственная проблема, с которой я сталкиваюсь, заключается в том, что когда происходит преобразование даты, они помещаются в столбец 1, а даты в столбце 5. Я не понимаю, что я делаю не так? Любые советы / примеры?
def xlsx2csv ():
wb = xlrd.open_workbook('.xlsx', '.csv' )
sh = wb.sheet_by_index(0)
file = open('.csv', 'wb')
csv_out = unicodecsv.writer(, encoding = 'utf-8')
for row_number in range(sh.nrows):
date = sh.row_values(row_number)[5]
if isinstance(date, float) or isinstance(date, int):
year, month, day, hour, minute, sec = xlrd.xldate_as_tuple(date,0)
py_date = "%2d/%2d/%04"% (month, day, year)
wr.writerow[py_date] + sh.row_vlaues(row_number)[0:])
else:
wr.writerow([py_date] + sh_row_values(row_number)[0:])
file.close()
xlsx2csv()






Вы добавляете к дате всю строку.
Так оператор + работает со списками.
a = 1
b = [2,3,4]
a + b #[1,2,3,4]
Переработайте этот код.
wr.writerow[py_date] + sh.row_vlaues(row_number)[0:])
Что-то вроде.
new_row = sh.row_vlaues(row_number)[0:]
new_row[5] = py_date
wr.wroterow(new_row) # save it to csv
Поскольку дата является 6-м элементом в массиве судя по sh.row_values(row_number)[5]
Я полагаю, что у вас есть ошибка в способе вызова кода. py_data - это строка. [py_date] создаст список с одним элементом py_data.
Спасибо за ответ. Но у меня проблема. Мой вызов [py_code] больше не работает. Я получаю «неверный синтаксис». Любой совет? Спасибо.