首页 > 解决方案 > 如何在不改变格式的情况下从 for 循环中输出日期时间变量?

问题描述

我有一个文件,其中包含包含日期和时间的行,例如:

PPS: 0,1096134, Sun Sep  6 16:05:32 2020,,,,,,,,,,,, 

我使用了一个 for 循环来查找行并提取日期和时间值。我正在尝试将值存储到变量“日期”中:

idx = ['PPS']
date = []
from datetime import datetime

with open('output2.csv','r') as input:  
    
    for line in input:
        if  any(idx in line for idx in idx):
            
            dt = line[16:-13]
            dt = datetime.strptime(dt, "%a %b  %d %H:%M:%S %Y")
            print(dt)
            date.append(dt)

print(date)

在循环中打印“dt”输出我正在寻找的格式:

2020-09-06 16:05:32

但是将 'dt' 附加到 'date' 会删除格式并在循环外打印时输出以下内容:

datetime.datetime(2020, 9, 6, 16, 5, 32)

为什么会发生这种情况,是否有更好的方法来做到这一点?

标签: pythondatetimefor-loop

解决方案


from datetime import datetime
dt = 'Sun Sep 6 16:05:32 2020'
dt = datetime.strptime(dt, "%a %b  %d %H:%M:%S %Y")
dates= [dt]

__str__单个对象的datetime具有很好的格式:

print(dt)

给出:

2020-09-06 16:05:32

但是,如果你把这些datetime对象放在一个列表中,那就丢失了。__str__列表不调用里面的__str__日期时间对象

print(dates)

给出:

[datetime.datetime(2020, 9, 6, 16, 5, 32)]

但是对象还是一样的。所以你可以做得到print(dates[0])漂亮的格式。

或者您可以使用循环:

for dt_entry in dates:
    print(dt_entry)

如果你必须


推荐阅读