首页 文章

Python3 - 列表中的格式日期

提问于
浏览
0

我目前正在尝试并且未能将日期(“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 回答

  • 1

    您似乎正在使用 DictReader 从CSV文件中读取 . 这意味着 line 是一个字典,其中包含当前行中的键及其值,如当前注释行 #newMessageDate = line.get('messagedate') 所示 .

    在这种情况下,您应该使用 line.get('messagedate') 而不是 line 本身 .

    newMessageDate = line.get('messagedate')
    newMessageDate = datetime.datetime.strptime(newMessageDate, date_fmt).strftime('%Y-%m-%d %H:%M')
    

    (我正在跳过循环和 try/except ,因为它们没有变化 . )


    不幸的是,你没有说明 line 的外观 . 从最新的评论来看,似乎你没有读取CSV而是JSON,并且 linelist 而不是 dict . 在这种情况下,您必须使用相应的索引访问日期元素,例如 newMessageDate = line[3] (假设日期位于列表的第四个位置) . 其余的答案仍然有效 .

相关问题