2016-11-16 41 views
1

我想批量更改csv文件中的日期列值,同時也刪除字符串的前導部分。目前的格式是,例如「Company Name Here Oct 2 2016 9:43 PM」。我需要ISO格式的日期,如「20161021502」。python批量更改csv日期

我卡在從CSV文件拆分對象,收到此錯誤:

Traceback (most recent call last): 
    File "C:\Users\dave\AppData\Local\Programs\Python\Python35\Scripts\dealerTestData.py", line 13, in <module> 
month, day, year, time = newDate.split() 

ValueError異常:沒有足夠的數值解壓縮(預計4,拿到2)

到目前爲止我的代碼看起來是這樣的:

dealerFile = open('C:/Users/dave/Downloads/Prospect_Source_Measurement_Details- 2016112.csv') 
dealerReader = csv.reader(dealerFile) 
dealerData = list(dealerReader) 
dealerData 


for index in dealerData: 
    newDate = (index[0])[-19:] 
    totalDate = repr(newDate) 

    month, day, year, time = newDate.split() 

    time = datetime.strptime(time, '%I:%M%p') 
    month = datetime.strptime(month, '%b') 
    totalDate = year + month.strftime('%m') + day + time.strftime('%H%M') 
    print(newDate) 

如果我註釋掉一切都會過去newDate = index[0][-19:]可以打印出整列減去公司名稱。只要我嘗試將它表示爲一個字符串並解析它,我就會得到錯誤。

+0

打印'newDate'並看看你得到了什麼。它似乎只有兩個元素,但你試圖分配給四個變量。 – furas

+0

實際上'20161021502'不完全是一個有效的ISO 8601日期。您缺少'T'分隔符:'2016102T1502'。 – qzb

回答

0

找到了答案。讀取文件時,有5個標題行與文件主體的解析方式不同。一旦他們被刪除,邏輯是健全的。