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

2024-06-28 19:00:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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

我想按fig的名字排序:

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

更新 在这里找到了我问题的答案: https://stackoverflow.com/a/2669120/6235069答案由@Mark Byers给出


Tags: 答案列表排序fig数字名字glob例子
2条回答

以下代码将完成您的工作:

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']

我在这里假设所有文件都以相同的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']

相关问题 更多 >