如何在 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']
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
JavaScript
PHP