對嵌入數字的字串進行排序
由於資料類型不同,對包含數字的字串清單進行排序可能會帶來挑戰。以下方法提供了正確排序這些字串的解決方案。
為了預處理字串,我們定義了一個輔助函數 atoi(),如果字串表示數字,則它將其轉換為整數;否則,它會傳回原始字串。這有助於從字串中提取數字組件。
接下來,我們介紹natural_keys()函數,它使用正規表示式分割字串,並將atoi()函數應用於每個組件。這會將列表轉換為可排序的形式。
使用 sort() 方法,我們應用natural_keys() 函數作為鍵參數。這會按照人類順序對列表進行排序,同時考慮字母和數字部分。
範例:
考慮以下字串清單:
["something1", "something12", "something17", "something2", "something25", "something29"]
使用natural_keys()函數對此列表進行排序產生:
['something1', 'something2', 'something12', 'something17', 'something25', 'something29']
使用浮點數對文字進行排序:
要擴充功能以包含浮點數,可以修改natural_keys()中的正規表示式模式以符合浮點數-點數。
return [ atof(c) for c in re.split(r'[+-]?([0-9]+(?:[.][0-9]*)?|[.][0-9]+)', text) ]
其中 atof() 是輔助函數,嘗試將字串轉換為浮點數。
這允許對包含字母和浮點組件的字串進行排序。
以上是如何對包含嵌入數字和浮點數的字串進行自然排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!