Python 使用多个分隔符按日期对字符串排序

Python 使用多个分隔符按日期对字符串排序,python,Python,我有一个使用glob命令可以找到的文件列表。文件名的前缀由用户更改(不是设置的格式),但文件名中有日期。我想按日期排序,并返回最新的一个。如果排序后有多个文件具有相同的日期,请按最后一系列编号进行排序 我查了几个关于slackoverflow的例子。此示例具有最接近的解决方案。但是,我有多个u分隔符,这使得多次拆分字符串效率低下。此外,用户可能会使用多个分隔符。我正在寻找一个更好的解决方案来提取字符串的最后一部分,因为它是固定格式,并且不受用户输入前缀的影响 文件名列表: file_v1__20

我有一个使用glob命令可以找到的文件列表。文件名的前缀由用户更改(不是设置的格式),但文件名中有日期。我想按日期排序,并返回最新的一个。如果排序后有多个文件具有相同的日期,请按最后一系列编号进行排序

我查了几个关于slackoverflow的例子。此示例具有最接近的解决方案。但是,我有多个u分隔符,这使得多次拆分字符串效率低下。此外,用户可能会使用多个分隔符。我正在寻找一个更好的解决方案来提取字符串的最后一部分,因为它是固定格式,并且不受用户输入前缀的影响

文件名列表:

file_v1__2019-07-01-090001.dat
file_v1__2019-07-01-090201.dat
file_v1__2019-06-01-092301.dat
file_v1__2019-06-01-091001.dat
file_v1__2019-06-02-091021.dat

可以使用sorted函数对数组进行拆分排序。 假设文件名存储在变量
文件列表中

您可以使用

sorted_file_list = sorted(file_list, key=lambda each_file: each_file.split('_')[-1])

date=sorted(date,key=lambda x:x.split(“\uuu”)[-1])

如果只需要最新的,则无需对它们进行排序。为此,您需要能够提取日期,这可以使用正则表达式来完成,并将其用作内置
max()
函数的
参数

import re

files = '''
file_v1__2019-07-01-090001.dat
file_v1__2019-07-01-090201.dat
file_v1__2019-06-01-092301.dat
file_v1__2019-06-01-091001.dat
file_v1__2019-06-02-091021.dat
'''.split()

regex = re.compile(r'\d{4}-\d{2}-\d{2}-\d{6}') # XXXX-XX-XX-XXXXXX Date pattern

print(max(files, key=lambda file:(regex.search(file).group(0))))
已排序(日期,键=lambda d:d.split(''.'[-1])