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

此列表按 组织。在我的列表之前是一个前缀。例如:。我使用正则表达式将对象名称从日期拆分。结果是:day.month.year[Objname].01.02.2020.log(\[Obj.*]).(\d{2}.\d{2}.\d{4})


01.02.2020

02.02.2020

03.02.2020

04.02.2020

05.02.2020

06.02.2020

07.02.2020

08.02.2020

09.02.2020

10.02.2020

11.02.2020

12.02.2020

13.02.2020

14.02.2020

15.02.2020

16.02.2020

17.02.2020

18.02.2020

19.02.2020

20.02.2020

21.02.2020

22.02.2020

23.02.2020

24.02.2020

25.02.2020

26.02.2020

27.02.2020

29.01.2020

30.01.2020

31.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


catspeake
浏览 112回答 2
2回答

犯罪嫌疑人X

您的日期是有序的,并且您希望按顺序对它们进行排序;因此,您可以使用拆分和反转组件的函数。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']

ITMISS

如果对它进行重新排序,以便将年份排在第一位,然后是月份,则基于字符串的排序应按预期工作。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python