为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 Python 从列表中对日期进行排序

如何使用 Python 从列表中对日期进行排序

catspeake 2022-08-11 17:49:28
此列表按 组织。在我的列表之前是一个前缀。例如:。我使用正则表达式将对象名称从日期拆分。结果是:day.month.year[Objname].01.02.2020.log(\[Obj.*]).(\d{2}.\d{2}.\d{4})01.02.202002.02.202003.02.202004.02.202005.02.202006.02.202007.02.202008.02.202009.02.202010.02.202011.02.202012.02.202013.02.202014.02.202015.02.202016.02.202017.02.202018.02.202019.02.202020.02.202021.02.202022.02.202023.02.202024.02.202025.02.202026.02.202027.02.202029.01.202030.01.202031.01.2020我使用是因为对象名称是由数字复合的,我需要返回此文件排序。但我不知道如何处理这个问题的最佳方法是什么。sorted()def getFiles(numbers): currentDay = datetime.datetime.now() numdays  = numbers dateList = [] for x in range (0, numdays):  date = currentDay - datetime.timedelta(days = x)  days = date.strftime("%d.%m.%Y")  dateList.append(days) path = "/var/log/" files = sorted([filename for root, dirs, files in os.walk(path)          for filename in files          for date in dateList          if filename.endswith(date+".log")]) return files
查看完整描述

2 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

您的日期是有序的,并且您希望按顺序对它们进行排序;因此,您可以使用拆分和反转组件的函数。dd.mm.yyyyyyyy.mm.ddkey.


>>> date_strings = ['01.01.2009', '04.07.2007', '05.06.2007', '06.06.2007']

>>> sorted(date_strings, key=lambda d: d.split('.')[::-1])

['05.06.2007', '06.06.2007', '04.07.2007', '01.01.2009']


查看完整回答
反对 回复 2022-08-11
?
ITMISS

TA贡献1871条经验 获得超8个赞

如果对它进行重新排序,以便将年份排在第一位,然后是月份,则基于字符串的排序应按预期工作。


查看完整回答
反对 回复 2022-08-11
  • 2 回答
  • 0 关注
  • 102 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信