對嵌入數字的字串進行排序
處理包含數字的字串時,按字母順序對它們進行排序可能不會產生所需的結果。要正確對此類字串進行排序,您需要同時考慮文字和數字部分。
人工排序(自然排序)
自然排序,也稱為人工排序,是一種用於以與人類感知方式一致的方式對項目進行排序的技術。這種方法涉及從字串中提取數字,然後根據其數值對它們進行排序。
在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中文網其他相關文章!