Python:在字符串中匹配自定义日期格式

时间:2018-02-09 23:21:16

标签: python date datetime

我有一个这样的字符串:

>>> string = "bla_bla-whatever_2018.02.09_11.34.09_more_bla-123"

我需要从中提取日期2018.02.09_11.34.09。它将始终采用这种格式。

所以我试过了:

>>> match = re.search(r'\d{4}\.\d{2}\.\d{2}_\d{2}\.\d{2}\.\d{2}', string)

它正确地从该字符串中提取日期:

>>> match.group()
'2018.02.09_11.34.09'

但是当我尝试从这个字符串创建一个datetime对象时,它不起作用:

>>> datetime.datetime.strptime(match.group(), '%Y.%m.%d_%H.%I.%S')
ValueError: time data '2018.02.09_11.34.09' does not match format '%Y.%m.%d_%H.%I.%S'

我做错了什么?

1 个答案:

答案 0 :(得分:6)

您需要将格式说明符Plus替换为%I几分钟:

%M

%Y.%m.%d_%H.%M.%S 表示12小时格式的小时,因此来自(0)1..12 ,而根据您的示例,您有 34 作为价值,大概是几分钟(%I)。