说明

工作中有时候总会遇到一些功能,比如排序,要么就自己写一个排序函数,这时候如果这个模块就可以使用了,可以大大的提高你的效率,节省你的时间。比如需要合并视频时,或者对文件夹下面的文件进行操作需要进行排序时。。。等

这个模块对英文和数字都有很好的效果。

一、安装pip install natsort

natsort模块官网地址:
https://pypi.org/project/natsort/

如果是window系统直接cmd中,直接命令安装就行

pip install natsort

二、简单使用1(数字类型的字符串排序)

1、不用模块方法

这种使用python list的sort 方法,也能达到对数字排序的效果。

ret1 = ['1', '1000', '10660', '1000', '11', '102', '10039999', ]
ret2 = [int(i) for i in ret1]
ret2.sort()
ret3 = [str(i) for i in ret2]

print(ret3)
# ['1', '11', '102', '1000', '1000', '10660', '10039999']

2、使用模块方法:

方法1:

from natsort import natsort_keygen

ret = ['1', '1000', '10660', '1000', '11', '102', '10039999', ]

natsort_key = natsort_keygen()
ret_list = sorted(ret, key=natsort_key)
print("ret_list",ret_list)
# ret_list ['1', '11', '102', '1000', '1000', '10660', '10039999']

方法2

from natsort import natsorted

ret1 = ['1', '1000', '10660', '1000', '11', '102', '10039999', ]
ret2 = natsorted(ret1)
print(ret2)

三、英文小写(单个大写也一样)+ 数字

from natsort import natsort_keygen,natsorted
a = ['2 ft 7 in', '1 ft 5 in', '10 ft 2 in', '2 ft 11 in', '7 ft 6 in']
natsort_key = natsort_keygen()
ret_list = sorted(a, key=natsort_key)
print("ret_list2",ret_list)

ret_list = natsorted(a)
print("ret_list3",ret_list)
# 结果
# ret_list2 ['1 ft 5 in', '2 ft 7 in', '2 ft 11 in', '7 ft 6 in', '10 ft 2 in']
# ret_list3 ['1 ft 5 in', '2 ft 7 in', '2 ft 11 in', '7 ft 6 in', '10 ft 2 in']

三、英文大小写 +数字

通过下面的代码和结果对比可以发现,如果想在排序不区分英文大小写,需要在
natsorted模块函数里面加个参数alg=ns.REAL | ns.LOCALE | ns.IGNORECASE,默认情况下是区分大小写进行排序的。

from natsort import natsorted,ns

a = ['Apple', 'apple15', 'Banana', 'apple14,689', 'banana']
ret2a = natsorted(a)
print("ret2a1",ret2a)
ret3 = natsorted(a, alg=ns.REAL | ns.LOCALE | ns.IGNORECASE)
print("ret3",ret3)
# 结果:
# ret2a1 ['Apple', 'Banana', 'apple14,689', 'apple15', 'banana']
# ret3 ['Apple', 'apple15', 'apple14,689', 'Banana', 'banana']

如果还想了解更多,可以参考官方文档。
https://pypi.org/project/natsort/