首頁 > 後端開發 > Python教學 > 如何在Python中自然地對包含數字的字串進行排序?

如何在Python中自然地對包含數字的字串進行排序?

DDD
發布: 2024-11-30 01:46:10
原創
585 人瀏覽過

How to Sort Strings Containing Numbers Naturally in Python?

對嵌入數字的字串進行排序

處理包含數字的字串時,按字母順序對它們進行排序可能不會產生所需的結果。要正確對此類字串進行排序,您需要同時考慮文字和數字部分。

人工排序(自然排序)

自然排序,也稱為人工排序,是一種用於以與人類感知方式一致的方式對項目進行排序的技術。這種方法涉及從字串中提取數字,然後根據其數值對它們進行排序。

在Python 中,您可以使用以下自訂排序鍵來實現自然排序:

def natural_keys(text):
    return [int(c) if c.isdigit() else c for c in re.split(r'(\d+)', text)]
登入後複製

此函數將字串分割為字元和數字,然後將數字字元轉換為整數。排序列表是透過使用以下自訂鍵呼叫sort() 函數來獲得的:

alist = ["something1", "something12", "something17", "something2", "something25", "something29"]
alist.sort(key=natural_keys)
print(alist)
登入後複製

輸出將是:

['something1', 'something2', 'something12', 'something17', 'something25', 'something29']
登入後複製

使用浮點數對字串進行排序

如果您的字串包含浮點數,您可以修改自然排序鍵以使用以下命令提取並轉換為浮點數以下正規表示式:

def natural_keys(text):
    return [float(c) if c.isdigit() else c for c in re.split(r'[+-]?([0-9]+(?:[.][0-9]*)?|[.][0-9]+)', text)]
登入後複製

此修改後的鍵也允許您使用浮點數對字串進行排序:

alist = ["something1", "something2", "something1.0", "something1.25", "something1.105"]
alist.sort(key=natural_keys)
print(alist)
登入後複製

輸出將為:

['something1', 'something1.0', 'something1.105', 'something1.25', 'something2']
登入後複製

透過利用人類排序技術,您可以以符合人類直覺的方式對嵌入數字的字串進行高效排序。

以上是如何在Python中自然地對包含數字的字串進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板