【问题标题】:create a list of datetime objects using datetime.strptime使用 datetime.strptime 创建一个日期时间对象列表
【发布时间】:2016-03-09 05:29:53
【问题描述】:

我有一个字符串列表。

date_str = ["2012-11-04 1:05:21", "2013-11-03 1:05:21", "2014-11-02 1:07:31"]

我想将它们读取为日期时间对象。对于一个字符串,我做

datetime.strptime(date_str[1], "%Y-%m-%d %H:%M:%S")

但我不知道如何创建日期时间对象列表。 如果我使用

datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S")

我收到此错误:

TypeError: must be string, not list

我尝试使用循环:

x = datetime.strptime(date_str[0], "%Y-%m-%d %H:%M:%S")
for i in range(1,len(date_str)):
    x.append(datetime.strptime(date_str[i], "%Y-%m-%d %H:%M:%S"))

但我收到以下错误

AttributeError: 'datetime.datetime' object has no attribute 'append'

有没有办法创建日期时间对象列表?

【问题讨论】:

    标签: python list datetime strptime


    【解决方案1】:

    x 必须是一个列表:

    x = []
    for i in range(len(date_str)):
        x.append(datetime.strptime(date_str[i], "%Y-%m-%d %H:%M:%S"))
    

    然后,您可以附加所有日期时间对象。或者更 Pythonian:

    x = [datetime.strptime(s, "%Y-%m-%d %H:%M:%S") for s in date_str]
    

    【讨论】:

    • 谢谢@schwobaseggl。我之前试过这个,当我打印 x 时,我得到以下 [datetime.datetime(2012, 11, 4, 1, 5, 21), datetime.datetime(2013, 11, 3, 1, 5, 21), datetime .datetime(2014, 11, 2, 1, 7, 31)] 如果我打印 x[1],它会给我正确的格式。 2013-11-03 01:05:21
    • @AsiehHarati 是的,如果你打印一个列表,它将使用其元素的repr 方法,而不是直接打印它们时使用的str。你可以比较一下:print repr(x[0]), str(x[0])
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-04
    • 2011-05-11
    • 2018-05-04
    • 2022-01-11
    • 1970-01-01
    • 2020-10-05
    • 1970-01-01
    相关资源
    最近更新 更多