按模式python排序列表中的文件

时间:2018-01-26 14:33:54

标签: python pandas numpy

我有一个包含240个数字的列表,所有数字都以无花果和无花果的数字开头。

以下是一个例子:

fig1-24-24-32
fig3-45-32-12
fig2-24-24-31
fig5-24-24-31
fig6-24-24-31
fig4-24-24-31

我想通过无花果名称来命名该列表:

fig1-24-24-32
fig2-24-24-31
fig3-45-32-12
fig4-24-24-31
fig5-24-24-31
fig6-24-24-31

我试过了:

print(glob.glob('fig*[1-241]*'))

然而,这不起作用 这就是我得到的output

UPDATE 在这里找到我的问题的答案: https://stackoverflow.com/a/2669120/6235069答案由@Mark Byers提供

2 个答案:

答案 0 :(得分:2)

我在这里假设所有文件都以相同的3个字符的长前缀开头(不一定是'fig';不会被考虑在内),而后面跟着数字(一个或多个)直到满足破折号('-')。

如果确实如此,您可以使用以下内容:

sorted(my_files, key=lambda x: int(x.split('-')[0][3:]))

请注意,my_files是一个包含所有文件名( basenames )的列表。

输出:

['fig1-24-24-32', 
 'fig2-24-24-31', 
 'fig3-45-32-12', 
 'fig4-24-24-31', 
 'fig5-24-24-31', 
 'fig6-24-24-31']

答案 1 :(得分:0)

以下代码可以帮助您完成工作:

mylist=['fig1-24-24-32',
'fig3-45-32-12',
'fig2-24-24-31',
'fig5-24-24-31',
'fig6-24-24-31',
'fig4-24-24-31']

updated_list=sorted(mylist)

排序将完成您的工作,除非您想对前3个字符进行排序。

updated_list

['fig1-24-24-32',
 'fig2-24-24-31',
 'fig3-45-32-12',
 'fig4-24-24-31',
 'fig5-24-24-31',
 'fig6-24-24-31']