用数字对python字符串列表进行排序 [英] Sort a python list of strings with a numeric number
问题描述
我有一个名为 filelist
In []: filelist
Out []: ['C:\\Mon20412\\P-2NODE-RAID6-1BLACK-32k-100-segmented.xlsx',
'C:\\Mon25312\\P-2NODE-RAID6-13RED-32k-100-segmented.xlsx',
'C:\\Mon20362\\P-2NODE-RAID6-2GREEN-32k-100-segmented.xlsx']
我想通过粗体位置的数值对文件列表进行排序
I want to sort this filelist by the numerical value that is in the bolded position
C:\ Mon20412 \ P-2NODE-RAID6- 1 BLACK-32k-100-segmented.xlsx
C:\ Mon25312 \ P-2NODE-RAID6- 13 RED-32k-100-segmented.xlsx
C:\ Mon20362 \ P-2NODE-RAID6- 2 GREEN-32k-100-segmented.xlsx
C:\Mon20412\P-2NODE-RAID6-1BLACK-32k-100-segmented.xlsx
C:\Mon25312\P-2NODE-RAID6-13RED-32k-100-segmented.xlsx
C:\Mon20362\P-2NODE-RAID6-2GREEN-32k-100-segmented.xlsx
因此在此示例中,输出将为
So in this example, the output would be
Out []: ['C:\\Mon20412\\P-2NODE-RAID6-1BLACK-32k-100-segmented.xlsx',
'C:\\Mon20362\\P-2NODE-RAID6-2GREEN-32k-100-segmented.xlsx'
'C:\\Mon25312\\P-2NODE-RAID6-13RED-32k-100-segmented.xlsx']
谢谢!
推荐答案
找到一种好的可靠方法来提取所需的号码.然后使用key
参数按该数字排序.对于您的输入来说,这似乎足够可靠,但是效率不高.
Find a good, reliable way to extract the number that you want. Then sort by that number, using the key
argument. This seems to be reliable enough for your input, but it's not efficient.
a = ['C:\\Mon20412\\P-2NODE-RAID6-1BLACK-32k-100-segmented.xlsx',
'C:\\Mon25312\\P-2NODE-RAID6-13RED-32k-100-segmented.xlsx',
'C:\\Mon20362\\P-2NODE-RAID6-2GREEN-32k-100-segmented.xlsx']
def k(a):
x = a.split("\\")[-1].split("-")[3]
y = filter(lambda x: x in "0123456789", x)
return int("".join(list(y)))
print(sorted(a, key=k))
输出:
['C:\\Mon20412\\P-2NODE-RAID6-1BLACK-32k-100-segmented.xlsx',
'C:\\Mon20362\\P-2NODE-RAID6-2GREEN-32k-100-segmented.xlsx',
'C:\\Mon25312\\P-2NODE-RAID6-13RED-32k-100-segmented.xlsx']
这篇关于用数字对python字符串列表进行排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!