我有一個 csv 檔案,其中包含不同大小的原始資料,其中包含每個原始資料的值和標題。
00_A1_s1
00_A1_s2
00_A1_s3
04_A1_s1
04_A1_s2
04_A1_s3
08_A1_s1
08_A1_s2
08_A1_s3
我想按名稱對原始資料進行分組,然后按坐標前面的數字對它們進行排序
00_A1_s1
04_A1_s1
08_A1_s1
00_A1_s2
04_A1_s2
08_A1_s2
00_A1_s3
04_A1_s3
08_A1_s3
謝謝!
uj5u.com熱心網友回復:
您可以使用sort帶有key引數的內置函式,該函式接受一個函式,您可以在其中推斷元素的順序條件。它回傳一個新串列。
# file names
l = """00_A1_s1
00_A1_s2
00_A1_s3
04_A1_s1
04_A1_s2
04_A1_s3
08_A1_s1
08_A1_s2
08_A1_s3"""
l = l.split('\n') # file names as list
# sort wrt the last group of characters
print(sorted(l, key=lambda p: p.split('_')[-1]))
輸出
04_A1_s1
08_A1_s1
00_A1_s2
04_A1_s2
08_A1_s2
00_A1_s3
04_A1_s3
08_A1_s3
uj5u.com熱心網友回復:
您可以使用sorted和使用tuple按排序順序最重要的每個專案,如下所示:
txt = """00_A1_s1
00_A1_s2
00_A1_s3
04_A1_s1
04_A1_s2
04_A1_s3
08_A1_s1
08_A1_s2
08_A1_s3"""
lst = txt.split('\n')
def orderSort(item):
splt_itm = item.split('_')
# first sorting on `A*` then on `s*` and at end consider number
return (splt_itm[1] , splt_itm[2] , splt_itm[0])
result = sorted(lst, key=orderSort)
print('\n'.join(result))
輸出:
00_A1_s1
04_A1_s1
08_A1_s1
00_A1_s2
04_A1_s2
08_A1_s2
00_A1_s3
04_A1_s3
08_A1_s3
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/346733.html
