1、安装
pip install natsort
2、为什么使用natsort 而不是sorted
在python中只需要调用sorted函数就可以了,但是这个函数有一个缺点,就是它是按照从第一位开始的顺序排列的。意思是:
wav_file = ['1.wav', '13.wav', '9.wav', '2.wav',"23.wav"]
sorted_file = sorted(wav_file)
print(sorted_file)
####['1.wav', '13.wav', '2.wav', '23.wav', '9.wav']
3、可以使用natsort
为了解决这个问题,可以使用natsort包。
1)正常排序:
正常按照数字大小排序:
from natsort import natsorted
wav_file = ['1.wav', '13.wav', '9.wav', '2.wav',"23.wav"]
sorted_file = natsorted(wav_file)
print(sorted_file)
#### ['1.wav', '2.wav', '9.wav', '13.wav', '23.wav']
逆序排序:
import natsort as ns
ns.natsorted(num_list,reverse=True)
2)按照大小写排序:
import natsort as ns
a = ['Apple', 'corn', 'Corn', 'Banana', 'apple', 'banana']
# 大写优先排序【默认】
print(ns.natsorted(a))
#小写优先排序
print(ns.natsorted(a, alg=ns.LOWERCASEFIRST))
#组合排序,即字母相同的排在一起,大写优先
print(ns.natsorted(a, alg=ns.GROUPLETTERS))
#组合排序,即字母相同的排在一起,小写优先
print(ns.natsorted(a, alg=ns.G | ns.LF))
3)路径排序
大部分情况下,在进行路径排序时,直接使用natsorted方法即可,但极少数情况下需要增加参数才可以使用,具体代码如下:
A 默认路径排序:
import natsort as ns
# 使用默认的排序方法
a = ['/home/class/test(2).txt', '/home/class/test.txt',
'/home/class(2)/test.txt', '/home/class(10)/test.txt']
# 正常路径排序
print(ns.natsorted(a))
['/home/class(2)/test.txt',
'/home/class(10)/test.txt',
'/home/class/test(2).txt',
'/home/class/test.txt']
B 将有后缀的放在后面:
# 按路径排序,先将当前路径没有后缀的放在前面,然后将带有路径的放在后面
print(ns.natsorted(a,alg=ns.PATH))
['/home/class/test.txt',
'/home/class/test(2).txt',
'/home/class(2)/test.txt',
'/home/class(10)/test.txt']
参考自:python自然排序natsort_natsort包-CSDN博客
介绍一个Python排序函数natsort_natsorted-CSDN博客