如何使用strftime格式列表中的datetime对象,同时不影响以下数字



我有一个典型的数据list,其中第一项是datetime对象,下面的项是与日期和时间相对应的数据。我想打印和格式化datetime对象。我不希望datetimestr表示,而是希望通过strftime或类似的格式选择。

我试过了

 print('{}'.format(', '.join(map(str,row))))

,它工作得很好,但我真的不想要那种格式(从在打印datetime对象列表时重写默认格式)。

我知道如何使用strftime,但我不知道如何在list的数据上调用它。似乎应该有一个简单的方法来做到这一点。当搜索如何执行此操作时,结果是关于strftime或在list中使用str,如上所述,因此我无法找到我要做的事情。

print ", ".join((row[0].strftime('%Y%m%d'),)+tuple(str(i) for i in row[1:]))

在下面的例子中,我将这一行定义为def print_row(row):

In [25]: print_row( (datetime.datetime(2010,12,02),"foo",1.23e3,-1000,
         datetime.date(2012,02,12)) )
20101202, foo, 1230.0, -1000, 2012-02-12
In [24]: print_row((datetime.date(2012,12,02),))
20121202
In [27]: print_row(())
<stacktrace>
IndexError: tuple index out of range
In [29]: print_row((1000,))
<stacktrace>
AttributeError: 'int' object has no attribute 'strftime'

这将使非datetime对象单独存在(我假设它们是字符串-如果不是,使用else str(item)而不是else item)。它使用三元制if..else来查看row中的每个项。

print(', '.join(datetime.datetime.strftime(item, '%Y%m%d') if type(item) == datetime.datetime else item for item in row))

format()似乎没有必要,因为您只打印一个项目,而不做任何格式化。

相关内容

  • 没有找到相关文章

最新更新