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

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

Linda Hamilton
發布: 2024-12-10 09:43:14
原創
704 人瀏覽過

How Can I Sort Strings with Embedded Numbers Naturally in Python?

自然排序:排列嵌入數字的字串的藝術

用數字對字串進行排序可能是一項棘手的任務,但這對許多人來說是必不可少的應用程式。在本次問答中,我們將探索實現類似人類排序結果的解決方案,讓您可以按邏輯順序排列「something1」、「something2」和「something17」等字串。

挑戰:

給定的輸入由包含數字的字串清單組成。然而,預設的 sort() 方法無法以對人類有意義的方式排列它們。例如,以下列表:

something1
something12
something17
something2
something25
something29
登入後複製
登入後複製

將排序為:

something1
something12
something17
something2
something25
something29
登入後複製
登入後複製

解決方案:自然鍵

解決方案在於使用自然鍵,這是一種為人類可讀性而設計的排序方法。自然鍵將字串中的數字視為單獨的實體,同時保持字串的整體結構。

這是使用natural_keys函數的Python實現:

import re

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

當應用於輸入列表時,結果將是:

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

附加註意事項:

如果需要對浮點數的字串進行排序,可以修改natural_keys函數中的正規表示式以匹配浮點數而不是整數。

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

此增強功能可讓您對字串進行排序,例如:

something1
something2
something1.0
something1.25
something1.105
登入後複製

,如下所示順序:

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

透過利用自然鍵的強大功能,您現在可以輕鬆地以人類可讀的方式排列嵌入數字的字串,使您的資料操作任務更加高效和直觀。

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

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