有没有一种方法可以猜测字符串的日期格式,并将其他日期转换为与给定字符串相同的格式(例如YYYYMMDD)?例如:
YYYYMMDD
# Recognize the format as YYYYMMDD date1 = '20221111' # Recognize the format as YYYY-MM-DD and converts to YYYYMMDD date2 = '2022-11-12'
7vhp5slm1#
可以使用dateutil.parser.parse(),它可以动态解析日期。例如:
dateutil.parser.parse()
from dateutil import parser date1 = '20221113' date2 = '2022-11-13' print(parser.parse(date1).strftime('%d-%m-%Y')) print(parser.parse(date2).strftime('%Y%m%d')) #13-11-2022 #20221113
mklgxw1f2#
我不太明白你说的“猜测日期格式”是什么意思,你是说改变Python处理日期的默认方式,因为这很难,如果不是不可能的话,其次,如果你想格式化文本,为什么不使用datetime。
from datetime import datetime datetime.strptime("20221112", '%Y%m%d') # datetime.datetime(2022, 12, 11, 0, 0) # Or you can also try datetime.strptime("20221211", '%Y%d%m') # datetime.datetime(2022, 11, 12, 0, 0)
如果使用datetime.strptime时感到困扰,可以在函数中使用它
def format_time(time_str, format='%Y%m%d'): return datetime.strptime(time_str, format) print(format_time("20231011")) # 2023-10-11 00:00:00
作为一个资源,我留给你这个,以帮助你的格式Python Strptime当然,如果你不知道样本数据是怎么来的,你就只能默认解释了,因为不可能知道怎么解释,我个人会用YYYYMMDD
hujrc8aj3#
如果你不能确保所有的数据都遵循ISO这样的约定,那么另一种解决方案就是使用一些 Package 器函数,通过regex/ multiple try except块和datetime.strptime(pattern,string)来解析给定的字符串。
3条答案
按热度按时间7vhp5slm1#
可以使用
dateutil.parser.parse()
,它可以动态解析日期。例如:
mklgxw1f2#
我不太明白你说的“猜测日期格式”是什么意思,你是说改变Python处理日期的默认方式,因为这很难,如果不是不可能的话,其次,如果你想格式化文本,为什么不使用datetime。
如果使用datetime.strptime时感到困扰,可以在函数中使用它
作为一个资源,我留给你这个,以帮助你的格式Python Strptime
当然,如果你不知道样本数据是怎么来的,你就只能默认解释了,因为不可能知道怎么解释,我个人会用YYYYMMDD
hujrc8aj3#
如果你不能确保所有的数据都遵循ISO这样的约定,那么另一种解决方案就是使用一些 Package 器函数,通过regex/ multiple try except块和datetime.strptime(pattern,string)来解析给定的字符串。