猿问

Python是否具有用于字符串自然排序的内置函数?

Python是否具有用于字符串自然排序的内置函数?

使用Python 3.x,我有一个字符串列表,我想对其执行自然的字母排序。

自然排序: Windows中文件的排序顺序。

例如,以下列表是自然排序的(我想要的):

['elm0', 'elm1', 'Elm2', 'elm9', 'elm10', 'Elm11', 'Elm12', 'elm13']

这是上面列表的“排序”版本(我有):

['Elm11', 'Elm12', 'Elm2', 'elm0', 'elm1', 'elm10', 'elm13', 'elm9']

我正在寻找一个行为与第一个类似的排序函数。


一只名叫tom的猫
浏览 796回答 4
4回答

阿晨1998

试试这个:import redef 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。代码改编自:人类排序:自然排序。
随时随地看视频慕课网APP

相关分类

Python
我要回答