python中简单而灵活的自然排序。
natsort的Python项目详细描述
快速描述
当您尝试对包含数字的字符串列表进行排序时,通常的python 排序算法按字典顺序排序,因此您可能无法得到 期待:
>>> a=['2 ft 7 in','1 ft 5 in','10 ft 2 in','2 ft 11 in','7 ft 6 in']>>> sorted(a)['1 ft 5 in', '10 ft 2 in', '2 ft 11 in', '2 ft 7 in', '7 ft 6 in']
注意,它有顺序('1','10','2')-这是因为列表是 按字典顺序排序 字母(即‘B’、‘BA’、‘C’)。
natsort 提供了一个帮助排序列表的函数 "自然"("自然"相当于L-定义,但通常意味着 基于意义而不是计算机代码点的排序)。 使用 natsorted 很简单:
>>> fromnatsortimportnatsorted>>> a=['2 ft 7 in','1 ft 5 in','10 ft 2 in','2 ft 11 in','7 ft 6 in']>>> natsorted(a)['1 ft 5 in', '2 ft 7 in', '2 ft 11 in', '7 ft 6 in', '10 ft 2 in']
natsorted 标识字符串中任意位置的数字并对其进行排序 当然。下面是您可以使用NatSort进行的一些其他操作 (另请参见 示例 快速入门指南,或 api 了解完整的详细信息)。
注意 : NatSorted 被设计为替换内置 排序功能。像 排序的 , natsorted的 排序不到位。 要对列表进行排序并将输出分配给同一个变量,必须 显式地将输出分配给变量:
>>> a=['2 ft 7 in','1 ft 5 in','10 ft 2 in','2 ft 11 in','7 ft 6 in']>>> natsorted(a)['1 ft 5 in', '2 ft 7 in', '2 ft 11 in', '7 ft 6 in', '10 ft 2 in']
>>> print(a)# 'a' was not sorted; "natsorted" simply returned a sorted list['2 ft 7 in', '1 ft 5 in', '10 ft 2 in', '2 ft 11 in', '7 ft 6 in']
>>> a=natsorted(a)# Now 'a' will be sorted because the sorted list was assigned to 'a'>>> print(a)['1 ft 5 in', '2 ft 7 in', '2 ft 11 in', '7 ft 6 in', '10 ft 2 in']
有关 自然排序的另一种方法。