我目前正在尝试并且未能将日期(“2017-01-25T09:00”)转换为%Y-%m-%d%H:%M
我尝试使用strptime()但我得到TypeError:strptime()参数1必须是str,而不是list
我是否需要在列表中的每个项目上进行尝试?在列表中,日期显示更多谢谢 .
代码中的步骤:
-
从JSON中的Rest请求获取响应
-
提取 Headers 值
-
逐行提取Body
-
将日期格式错误的值更新为所需格式
-
将每个提取的行写入电子表格
这是我目前正在尝试的内容:
for line in body:
#newMessageDate = line.get('messagedate')
if line:
date_formats = ["%Y-%m-%d%T%H:%M"]
for date_fmt in date_formats:
try:
line = datetime.datetime.strptime(line, date_fmt).strftime('%Y-%m-%d %H:%M')
except ValueError:
continue
else:
break
输出的csv文件的精简版本如下:
driver,id,startdate,startlocation,finsihlocation,finsihtime
Driver 1,3,2016-09-21T12:02,Dublin,2016-09-21T15:02
Driver 2,4,2016-09-21T12:02,Dublin,2016-09-21T15:02
提前致谢!
1 回答
您似乎正在使用
DictReader
从CSV文件中读取 . 这意味着line
是一个字典,其中包含当前行中的键及其值,如当前注释行#newMessageDate = line.get('messagedate')
所示 .在这种情况下,您应该使用
line.get('messagedate')
而不是line
本身 .(我正在跳过循环和
try/except
,因为它们没有变化 . )不幸的是,你没有说明
line
的外观 . 从最新的评论来看,似乎你没有读取CSV而是JSON,并且line
是list
而不是dict
. 在这种情况下,您必须使用相应的索引访问日期元素,例如newMessageDate = line[3]
(假设日期位于列表的第四个位置) . 其余的答案仍然有效 .