Я пишу файл csv. Обе строки [3] и строка [4] являются столбцами даты в моем исходном файле csv. Строка [3] и строка [4] показывают поплавки. В файле csv оба из них являются целыми числами, но когда я запускаю код Python, он показывает ошибку, указывающую десятичную.Преобразование столбцов в datetime
import csv
import xlrd
import time
import datetime
workbook = xlrd.open_workbook('T:/SUNDAY REPORT 12.30.16.xlsm')
for sheet in workbook.sheets():
with open('{}.csv'.format(sheet.name), 'wb') as f:
writer = csv.writer(f)
writer.writerows(sheet.row_values(row) for row in range(sheet.nrows))
print "CSV converted"
time.sleep(5)
def xldate_to_datetime(xldate):
tempDate = datetime.datetime(1900, 1, 1)
deltaDays = datetime.timedelta(days=float(xldate)-2)
TheTime = (tempDate + deltaDays)
return TheTime.strftime("%m/%d/%Y")
with open("InfoCenterTracker.csv","rb") as source:
rdr= csv.reader(source)
with open("result.csv","wb") as result:
wtr= csv.writer(result)
next(rdr, None) # skip the headers
for r in rdr:
r[3] = xlrd.xldate.xldate_as_datetime(float(r[3]), workbook.datemode)
r[4] = xlrd.xldate.xldate_as_datetime(float(r[4]), workbook.datemode) if r[1] == "":
pass
else:
wtr.writerow(r[1:19])
print "Columns converted to datetime"
Ошибка:
r[3] = xlrd.xldate.xldate_as_datetime(float(r[3]), workbook.datemode)
ValueError: could not convert string to float:
Значения в CSV:
Week(Row[3]): Date(row[4]):
42735.0 42730.0
42735.0 42730.0
42735.0 42731.0
42735.0 42731.0
Я отредактировал мой оригинальный пост, чтобы отразить изменения. –
Вы пробовали 'xlrd.xldate.xldate_as_datetime (int (42735.0), workbook.datemode)'? – Abdou
Спасибо, я не пробовал, где я должен быть в этом фрагменте? –