python - Python 中包含路径的自然排序列表

标签 python string python-2.7 sorting path

我有一个列表 paths_list,其中包含特定文件夹的文件(图像)路径。示例:

['/home/username/images/s1/4.jpg', '/home/username/images/s1/7.jpg', 
'/home/username/images/s1/6.jpg', '/home/username/images/s1/3.jpg', 
'/home/username/images/s1/5.jpg', '/home/username/images/s1/10.jpg', 
'/home/username/images/s1/9.jpg', '/home/username/images/s1/1.jpg', 
'/home/username/images/s1/2.jpg', '/home/username/images/s1/12.jpg', 
'/home/username/images/s1/11.jpg', '/home/username/images/s1/8.jpg']

我想按顺序排序:[/1.jpg ,2.jpg .....,/12.jpg] 通过长度字母 顺序排序都没有帮助。这里应该做什么?

最佳答案

您可以将 sortedlambda 一起使用。对于排序标准,您可以使用 os 首先仅提取文件名(使用 basename ),然后您可以仅拆分文件名减去扩展名(使用 splitext )。

最后转换为 int,这样您就可以按数字排序而不是按字典顺序排序。

>>> import os
>>> l = ['/home/username/images/s1/4.jpg', '/home/username/images/s1/7.jpg', '/home/username/images/s1/6.jpg', '/home/username/images/s1/3.jpg', '/home/username/images/s1/5.jpg', '/home/username/images/s1/10.jpg', '/home/username/images/s1/9.jpg', '/home/username/images/s1/1.jpg', '/home/username/images/s1/2.jpg', '/home/username/images/s1/12.jpg', '/home/username/images/s1/11.jpg', '/home/username/images/s1/8.jpg']
>>> sorted(l, key=lambda i: int(os.path.splitext(os.path.basename(i))[0]))
['/home/username/images/s1/1.jpg',
 '/home/username/images/s1/2.jpg',
 '/home/username/images/s1/3.jpg',
 '/home/username/images/s1/4.jpg',
 '/home/username/images/s1/5.jpg',
 '/home/username/images/s1/6.jpg',
 '/home/username/images/s1/7.jpg',
 '/home/username/images/s1/8.jpg',
 '/home/username/images/s1/9.jpg',
 '/home/username/images/s1/10.jpg',
 '/home/username/images/s1/11.jpg',
 '/home/username/images/s1/12.jpg']

关于python - Python 中包含路径的自然排序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44721221/

相关文章:

python - 将 j < i+1 的双和向量化

python - 无法让 __import__() 在 python 中动态导入模块——我知道这是因为它没有出现在 sys.modules 中

python - 在python3.8中的自记录f字符串中的等号后插入换行符

java - 查找单词中第一个元音出现的位置

python - 如何在 Pandas 中打印 float ?

django - django后端中的身份验证

Python - 遍历前一周的同一天

python - 合并两个文件中的行(如果它们具有相同的列值)

python - 在 Locust 中发布动态值

python - Pandas 没有正确计算行数