如何在 Python 中使用 strptime 将包含字符的字符串转换为日期时间

问题描述 投票:0回答:2

我正在尝试将日期信息之间存在字符的字符串转换为日期时间。我想知道如果不使用

replace
功能是否可行。假设我的字符串定义为
'20220117A1745'
,表示 2022 年 1 月 17 日下午 5:45。

如果我按预期使用

strptime
,我会收到一个错误。

from datetime import datetime
datetime.strptime(x,"%Y%m%d%H%M")
ValueError: unconverted data remains: A1745

我想知道我是否可以在不使用其他方法的情况下做到这一点。我不想使用 antoher 方法的原因是,

replace
的时间复杂度很差,会严重减慢执行时间(参见 reference)。我将在 for 循环中对数十万个字符串执行此操作。

python regex datetime strptime
2个回答
1
投票

如果字符串 always 在同一位置有 'A' 那么你可以这样做:

from datetime import datetime
x = '20220117A1745'
print(datetime.strptime(x,"%Y%m%dA%H%M"))

如果你不知道这封信是什么那么:

print(datetime.strptime(x[:8]+x[9:],"%Y%m%d%H%M"))

两种方法的输出:

2022-01-17 17:45:00

1
投票

怎么样

from datetime import datetime

x = '20220117A1745'
date_str = x[:8] + x[9:]
date_obj = datetime.strptime(date_str, '%Y%m%d%H%M')
print(date_obj)

这给

2022-01-17 17:45:00

© www.soinside.com 2019 - 2024. All rights reserved.