python - 如何在不改变格式的情况下从 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)
为什么会发生这种情况,是否有更好的方法来做到这一点?
解决方案
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)
如果你必须
推荐阅读
- git - 签出被 git 忽略的文件
- php - 无法在 gmail、hotmail 上接收电子邮件,但在我自己的 smtp 服务器 laravel 上接收
- azure - Azure Log Analytics 中的计划删除日志
- sql - 在某个活动发生后删除一个 ID 的所有条目的 SQL 语句是什么?
- django-forms - 注册后未发送 Django Allauth 确认/验证电子邮件
- android - If I use ViewBinding in Fragments, would I have a NPE after onDestoryView()?
- javascript - 自动计算 Java 脚本在其他模式下不起作用
- android - 无法解析改造 rxjava errorBody
- postgresql - 带有 Postgres 的无人机 - psql:无法连接到服务器:没有这样的文件或目录
- express - Express 发送到客户端后无法设置标头