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

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

Linda Hamilton
Linda Hamilton原創
2024-12-10 09:43:14673瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn