python如何通过与变量名匹配的模式对列表进行排序

时间:2014-08-19 18:21:49

标签: python sorting python-2.7

我有一个可以不同命名的文件列表,但总是包含创建文件的时间字符串。但是,它并不总是在同一个地方。

示例:

dir=['test_140815080910_data.p',
'other_test_140815081010_data.p',
'other_test_140815081111_other_data.p']

如何按#?

按顺序对列表进行排序

由于

2 个答案:

答案 0 :(得分:3)

您可以使用re并查找10位数的块,并将其用作第一个排序键,后跟字符串本身,例如:

import re

data=['test_140815080910_data.p',
'other_test_140815081010_data.p',
'other_test_140815081111_other_data.p']

data.sort(key=lambda L: (re.findall('\d{10}', L), L))
# ['test_140815080910_data.p', 'other_test_140815081010_data.p', 'other_test_140815081111_other_data.p']

答案 1 :(得分:0)

import re
dir.sort(key=lambda a: re.findall("(\d{1,})", a)[0])