如何编写一个从任意格式的字符串中检索日期的函数

How to write a function that retrieves dates from strings arbitrarily formatted

简而言之,我需要对Pythonf-string进行逆向操作。

使用此格式化程序,在 Python 中,您可以轻松地从包含日期的变量构建任意字符串。例如:

f"{day}-{mon}-{year}   \n {hour}:{minute}some silly\n text here_{seconds}"

其中 year 等是代表您期望的整数。

现在,我需要一个能够执行反向操作的函数,即给定一个以有趣(但已知)方式格式化的字符串,检索基础日期变量。像这样:

def retrieve_date(str_date, str_format):        
    # str_date is 27-03-2021   \n 04:11:some silly\n text here_34"
    # str_format is something like "{day}-{mon}-{year}   \n {hour}:{minute}some silly\n text here_{seconds}"

    # some logic

    # return the 6 integers that make up the time stamp  
    return year, month, day, hour, minute, second

如何在 Python 中完成?

如评论中所述,可以使用datetime.strptime。 p 代表 'parse',还有 strftime 可以用来将日期格式化为特定字符串。

from datetime import datetime

str_date = "27-03-2021   \n 04:11:some silly\n text here_34"
str_format = "%d-%m-%Y   \n %H:%M:some silly\n text here_%S"

def retrieve_date(str_date, str_format):        
    d = datetime.strptime(str_date, str_format)

    return d.year, d.month, d.day, d.hour, d.minute, d.second


print(retrieve_date(str_date, str_format))

(2021, 3, 27, 4, 11, 34)