如何在 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