如何在 Python 中正確排序包含數字的字串?


您想按字串中的數字進行排序的這種排序稱為自然排序或人類排序。例如,如果您有以下文字

['Hello1','Hello12', 'Hello29', 'Hello2', 'Hello17', 'Hello25']

 那麼您希望排序後的列表是

['Hello1', 'Hello2','Hello12', 'Hello17', 'Hello25', 'Hello29']

 而不是

['Hello1','Hello12', 'Hello17', 'Hello2', 'Hello25', 'Hello29']

 為此,我們可以使用 sort() 使用的額外引數。這是一個函式,用於從列表中的條目計算鍵。我們使用正則表示式從字串中提取數字,並在文字和數字上進行排序。 

 import re
 def atoi(text):
    return int(text) if text.isdigit() elsetext
def natural_keys(text):
    return [ atoi(c) for c in re.split('(\d+)',text) ]
 my_list =['Hello1', 'Hello12', 'Hello29', 'Hello2', 'Hello17', 'Hello25']
 my_list.sort(key=natural_keys)
print my_list

 這將為您提供輸出

['Hello1','Hello2', 'Hello12', 'Hello17', 'Hello25', 'Hello29']

更新日期:30-Sep-2019

3K+ 瀏覽

開啟您的 職業

完成課程進行認證

開始
廣告
© . All rights reserved.