【发布时间】:2016-11-16 20:02:41
【问题描述】:
我正在尝试批量更改 csv 文件中的日期列值,同时还删除字符串的前导部分。当前格式为,例如“Company Name Here Oct 2 2016 9:43PM”。我需要 ISO 格式的日期,例如“20161021502”。
我一直在从 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:] 之后的所有内容,则可以打印出整列减去公司名称。一旦我尝试将其表示为字符串并对其进行解析,就会出现错误。
【问题讨论】:
-
打印
newDate看看你会得到什么。它似乎只有两个元素,但您尝试分配给四个变量。 -
实际上
20161021502并不是一个有效的 ISO 8601 日期。您缺少T分隔符:2016102T1502。