Lis中Python3格式的日期

2024-04-18 18:37:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将日期(“2017-01-25T09:00”)转换为%Y-%m-%d%H:%m,但失败

我尝试使用strtime(),但得到TypeError:strtime()参数1必须是str,而不是list

我需要在我单子上的每一项上都试一下吗?名单上的日期显示了更多的感谢一次。你知道吗

代码中的步骤:

  1. 从JSON中的Rest请求获取响应
  2. 提取标题值
  3. 逐行提取正文
  4. 将日期格式不正确的值更新为所需格式
  5. 将提取的每一行写入电子表格

以下是我目前正在尝试的:

    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

提前谢谢!你知道吗


Tags: infor参数datetimedate格式driverline
1条回答
网友
1楼 · 发布于 2024-04-18 18:37:23

似乎您正在使用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。在这种情况下,必须使用相应的索引来访问date元素,例如newMessageDate = line[3](假设日期位于列表的第四个位置)。剩下的答案仍然成立。你知道吗

相关问题 更多 >