Python Natsort 递归排序字符串

2024-03-28 09:55:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我发现在使用^{}时,排序顺序在字符串中发生了部分变化:

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']

Tags: 字符串inimport排序顺序as情况out
1条回答
网友
1楼 · 发布于 2024-03-28 09:55:00

试试这个:

ns.natsorted(["01-08", "02-07", "01-06", "02-09"], alg=ns.ns.INT | ns.ns.UNSIGNED)

问题是你的字符串解释不正确。这将手动设置算法以查找无符号整数。否则,它将搜索带符号的int,而“-”会导致问题(例如,如果将“-08”解释为-8,则排序是有意义的)。你知道吗

这实际上相当于versorted,这只是这个算法的一个快捷方式,但我认为最好是显式地写下您正在做的事情,特别是因为versorted可能会更改为更适用于将来的版本。你知道吗

相关问题 更多 >