我正在尝试将xlsx文件转换为csv。我拼凑的代码有效,我遇到的唯一问题是当日期转换发生时,当日期在第5列时,它们被放在第1列。我不知道我是什么意思做错了?有什么建议/例子吗?
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()
答案 0 :(得分:0)
您要将整行附加到日期。
这就是运算符+
处理列表的方式。
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]