我有很多包含多个版本化文件的文件夹。以下是示例文件:
Cat_Setup_v01.mb
Cat_Setup_v18.mb
版本号有两个字符填充。这样,我可以使用:
轻松地对文件进行排序 listFiles = glob.glob( myPath + "*.m*") # Retrieve files in my folder
listFiles.sort()
不幸的是,我有一些文件有超过一百个版本。因此,我的排序方法被v1XX打破,因为它们在v09和v10之间排序。
是否有一种有效的方法可以以正确的方式对文件进行排序,而无需重命名所有文件并更改其填充?
sorted(versionNumber, key=int)
结合一些分裂字符串操作可能是一个有趣的路径,但我担心它会太麻烦。
我不太了解Python,因为它似乎是一种有很多可能性的有趣语言,我很确定有一种更有效的方法。
干杯
答案 0 :(得分:1)
正则表达式可以帮助您。
import re
file=["Cat_Setup_v91.mb", "Cat_Setup_v01.mb", "Cat_Setup_v119.mb"]
print sorted(file, key=lambda x: int(re.findall("(?<=v)\d+", x)[0]))
给出输出:
['Cat_Setup_v01.mb', 'Cat_Setup_v91.mb', 'Cat_Setup_v119.mb']
已更新:根据@Rawing评论
将"(?<=v)\w*"
更改为"(?<=v)\d+"