Python3 - 列表中的格式日期

时间:2018-06-14 10:34:45

标签: python python-3.x strptime

我目前正在尝试并且未能将日期(“2017-01-25T09:00”)转换为%Y-%m-%d%H:%M

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

我是否需要在列表中的每个项目上进行尝试?在列表中,日期显示更多谢谢。

代码中的步骤:

  1. 从JSON中的Rest请求获取响应
  2. 提取标题值
  3. 逐行提取身体
  4. 将日期格式错误的值更新为所需格式
  5. 将每个提取的行写入电子表格
  6. 以下是我目前正在尝试的内容:

    of string

    输出的csv文件的精简版本如下:

        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
    

    提前致谢!

1 个答案:

答案 0 :(得分: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](假设日期位于列表的第四个位置)。其余的答案仍然存在。