假設我有一個目錄檔案路徑串列作為字串,如下所示:
目前:
['/home/me/summary_generating/test_2', '/home/me/summary_generating/test_1', /home/me/summary_generating/test_3, /home/me/summary_generating/test_5]
理想情況下,我想做的是提取基本名稱中出現的任何數字(在本例中為test_*),然后重新排序此串列,使其按升序排列,如下所示:
想要的:
['/home/me/summary_generating/test_1', '/home/me/summary_generating/test_2', /home/me/summary_generating/test_3, /home/me/summary_generating/test_5]
我目前的想法是嘗試提取基本名稱,使用正則運算式來識別基本名稱中的數字,以某種方式通過其對應的數字(例如索引0將是/home/me/summary_generating/test_1)索引串列中的每個專案,然后使用索引重新排序。但是,這似乎可能令人費解,我想知道是否有更好的方法?
一如既往,任何幫助表示贊賞!
uj5u.com熱心網友回復:
假設所有test_檔案都在同一個目錄中:
lst = ['/home/me/summary_generating/test_2',
'/home/me/summary_generating/test_1',
'/home/me/summary_generating/test_3',
'/home/me/summary_generating/test_5']
lst.sort(key=lambda x: int(x.rsplit("_", maxsplit=1)[1]))
排序后的串列是:
['/home/me/summary_generating/test_1',
'/home/me/summary_generating/test_2',
'/home/me/summary_generating/test_3',
'/home/me/summary_generating/test_5']
它根據 a 之后最右邊的數字排序"_"。轉換為之后的int實作(如果你只是按字串排序,這不是你得到的)。"test_10""test_9"
uj5u.com熱心網友回復:
如果檔案的目錄是一致的,那么您可以按原樣排序。
如果您只想按檔案名排序而忽略位置,那么您可以'/'在您的密鑰中拆分并僅提取檔案名。
sorted(file_paths, key=lambda x: x.split("/")[-1])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/466055.html
下一篇:解壓包含許多資料框的串列
