如何编写一个从任意格式的字符串中检索日期的函数
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)
简而言之,我需要对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)