Python是否具有用于字符串自然排序的内置函数?使用Python 3.x,我有一个字符串列表,我想对其执行自然的字母排序。自然排序: Windows中文件的排序顺序。例如,以下列表是自然排序的(我想要的):['elm0', 'elm1', 'Elm2', 'elm9', 'elm10', 'Elm11', 'Elm12', 'elm13']这是上面列表的“排序”版本(我有):['Elm11', 'Elm12', 'Elm2', 'elm0', 'elm1', 'elm10', 'elm13', 'elm9']我正在寻找一个行为与第一个类似的排序函数。
4 回答
阿晨1998
TA贡献2037条经验 获得超6个赞
试试这个:
import re
def natural_sort(l):
convert = lambda text: int(text) if text.isdigit() else text.lower()
alphanum_key = lambda key: [ convert(c) for c in re.split('([0-9]+)', key) ]
return sorted(l, key = alphanum_key)
输出:
['elm0', 'elm1', 'Elm2', 'elm9', 'elm10', 'Elm11', 'Elm12', 'elm13']
看到它在线工作:ideone。
代码改编自:人类排序:自然排序。
添加回答
举报
0/150
提交
取消