问题描述
dog 1.jpg
dog 2.jpg
dog 3.jpg
.
.
dog 11.jpg
dog 12.jpg
当我执行 sorted(glob.glob('that_dir/*jpg'))
和 print
时,它返回:
dog 1.jpg
dog 10.jpg
dog 11.jpg
dog 12.jpg
.
.
dog 8.jpg
dog 9.jpg
在这种情况下,有没有办法让它按 dog 1.jpg,dog 2.jpg .. dog 12.jpg
的顺序返回?
还是完全避免这种编号方法并使用诸如前导零之类的东西来代替更明智?
解决方法
使用 distutils.version.LooseVersion
的一种方式:
from distutils.version import LooseVersion
l = ['dog 12.jpg','dog 1.jpg','dog 11.jpg','dog 2.jpg','dog 3.jpg','dog 10.jpg']
sorted(l,key=LooseVersion)
输出:
['dog 1.jpg','dog 10.jpg','dog 12.jpg']