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
提交
取消