我发现使用natsort.natsorted
时,排序顺序会在字符串中部分更改:
In [31]: import natsort as ns
In [32]: ns.natsorted(["01-08", "02-07", "01-06", "02-09"])
Out[32]: ['01-08', '01-06', '02-09', '02-07']
在这种情况下,我想要的行为是:
In [33]: sorted(["01-08", "02-07", "01-06", "02-09"])
Out[33]: ['01-06', '01-08', '02-07', '02-09']
答案 0 :(得分:1)
试试这个:
ns.natsorted(["01-08", "02-07", "01-06", "02-09"], alg=ns.ns.INT | ns.ns.UNSIGNED)
问题是natsorted错误地解释了你的字符串。这会手动设置算法以查找无符号整数。否则,它会搜索签名的整数,并且" - "导致问题(如果您解释" -08",例如,-8,那么排序是有意义的。)
这实际上相当于versorted,这只是此算法的一个快捷方式,但我认为明确写出你正在做的事情会更好,特别是因为versorted可能会更改为更适用于版本在将来。