Python3-以不同形式对字符串格式的日期列表进行排序(带时间和不带时间)
我试图对字符串格式的日期列表进行排序,但每个日期的格式不同,如下所示:Python3-以不同形式对字符串格式的日期列表进行排序(带时间和不带时间),python,string,sorting,date,python-3.x,Python,String,Sorting,Date,Python 3.x,我试图对字符串格式的日期列表进行排序,但每个日期的格式不同,如下所示: lst = ['11/04/2016, 23:55', '15/11/2014', '04/05/2016, 23:55', '24/11/2013, 12:30', '31/12/2015'] 我尝试了以下排序: lst.sort(key=lambda date: datetime.strptime(date, "%d/%m/%Y, %H:%M")) 但是由于我不知道日期会是什么(有具体的时间还是没有),我被卡住了。。
lst = ['11/04/2016, 23:55', '15/11/2014', '04/05/2016, 23:55', '24/11/2013, 12:30', '31/12/2015']
我尝试了以下排序:
lst.sort(key=lambda date: datetime.strptime(date, "%d/%m/%Y, %H:%M"))
但是由于我不知道日期会是什么(有具体的时间还是没有),我被卡住了。。我想不出一个通用的条件来对这个列表进行排序,如果给定的话,我需要保留准确的时间(即我不想分割字符串,只取,
之前的内容)
请帮助:(您可以在键函数中使用
if-else
语句:
>>> lst.sort(key=lambda d: datetime.strptime(d, "%d/%m/%Y, %H:%M") if ':' in d else datetime.strptime(d, "%d/%m/%Y"))
>>> lst
['24/11/2013, 12:30', '15/11/2014', '31/12/2015', '11/04/2016, 23:55', '04/05/2016, 23:55']
>>>
如果您可能有2个以上的日期格式,您可以在一个非内嵌函数中处理多个状态
def key_func(dat):
if ':' in dat:
return datetime.strptime(d, "%d/%m/%Y, %H:%M")
elif cond2:
# return val2
elif cond3:
# return val3
非常感谢!!我不知道你可以在lambda函数中添加条件,这正是我需要的。谢谢!