【问题标题】:Python csv writerows reformatting datetime to include secondsPython csv writerows 重新格式化日期时间以包含秒数
【发布时间】:2014-09-25 03:33:07
【问题描述】:

使用 Python,我在列表中有一个日期时间对象。在程序执行期间我想要并拥有的日期时间格式是 (%Y/%m/%d %H:%M)。

然后,我使用 csv.writer 和 writerows(在列表列表中)保存文件。

但是,当我打开文本文件时,所有日期和时间现在都包括秒数, :00 。

为什么保存文件会导致时间增加秒数?

编辑显示值和代码: 这是对象的打印: datetime.datetime(2014, 3, 17, 8, 10)

with open(FinalSaveFileName, 'wb') as ffn:
w = csv.writer(ffn, dialect = 'excel-tab')
w.writerows(List)

在 Notepad++(不是 Excel)中打开后, 此列的“2014-03-17 08:10:00”。

【问题讨论】:

  • 你能把一些代码过去吗?
  • 因为你是用excel打开的?

标签: python datetime csv


【解决方案1】:

您的日期时间似乎被强制转换为默认格式的字符串。如果您想对日期使用另一种格式,请在将它们发送到 csv.writer 之前自行将它们转换为字符串。 here 有一个很好的例子:

import datetime

with open('file.csv','w') as outputfile:
    for row in rows:
        wrtr = csv.writer(outputfile, delimiter=',', quotechar='"')
        #change row[1] to wherever your datetime is
        row[1] = row[1].strftime('%Y/%m/%d %H:%M')
        wrtr.writerow(row)

【讨论】:

  • 我已经实现了这个,但希望可以在 csv 编写器中做一些事情来避免这种重新格式化,因为日期时间没有秒信息。
  • csv.writer 中的日期时间转换可能被硬编码为您所看到的格式。这意味着即使重写 str 方法也不会改变输出。
猜你喜欢
  • 1970-01-01
  • 2012-06-03
  • 1970-01-01
  • 1970-01-01
  • 2013-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多