假設:我有目錄名稱:DIR1 方向1/排序目錄
A_Y2016W25
A_Y2017W15
B_Y2017W30
A_Y2016W20
B_Y2017W35
A_Y2017W30
我想YXXXX和WXX和打印這是爲了對它進行排序:
A_Y2016W20
A_Y2016W25
A_Y2017W15
A_Y2017W30
B_Y2017W30
B_Y2017W35
我如何使用排序?
假設:我有目錄名稱:DIR1 方向1/排序目錄
A_Y2016W25
A_Y2017W15
B_Y2017W30
A_Y2016W20
B_Y2017W35
A_Y2017W30
我想YXXXX和WXX和打印這是爲了對它進行排序:
A_Y2016W20
A_Y2016W25
A_Y2017W15
A_Y2017W30
B_Y2017W30
B_Y2017W35
我如何使用排序?
你可以做到這一點 -
a = ['A_Y2016W25', 'A_Y2017W15', 'B_Y2017W30', 'A_Y2016W20', 'B_Y2017W35', 'A_Y2017W30']
def ext(strng):
return ord(strng[0]), int(strng[3:7]), int(strng[8:])
a.sort(key = ext) #['A_Y2016W20', 'A_Y2016W25', 'A_Y2017W15', 'A_Y2017W30', 'B_Y2017W30', 'B_Y2017W35']
這是一個基本的排序過程()將在他的上下文中爲OP的問題做好工作。 – Fabien
>>> a = ['A_Y2016W25', 'A_Y2017W15', 'B_Y2017W30', 'A_Y2016W20', 'B_Y2017W35', 'A_Y2017W30']
>>> a.sort()
>>> a
['A_Y2016W20', 'A_Y2016W25', 'A_Y2017W15', 'A_Y2017W30', 'B_Y2017W30', 'B_Y2017W35']
將做的工作。
實際上,您不需要執行任何類型的子字符串,因爲您已經在要執行的排序中保持優先順序。
使用sort()
與基於正則表達式的關鍵功能類似這樣的例子另一種方法:
import re
def sort_regex(regex, a):
data = re.search(regex, a)
return data.group(0) if data else ''
a = ['A_Y2016W25', 'A_Y2017W15', 'B_Y2017W30', 'A_Y2016W20', 'B_Y2017W35', 'A_Y2017W30']
a.sort(key=lambda x: sort_regex(r'Y\d{4}', x))
print(a)
a.sort(key=lambda x: sort_regex(r'W\d{2}', x))
print(a)
a.sort(key=lambda x: sort_regex(r'Y\d{4}W\d{2}', x))
print(a)
輸出:
['A_Y2016W25', 'A_Y2016W20', 'A_Y2017W15', 'B_Y2017W30', 'B_Y2017W35', 'A_Y2017W30']
['A_Y2017W15', 'A_Y2016W20', 'A_Y2016W25', 'B_Y2017W30', 'A_Y2017W30', 'B_Y2017W35']
['A_Y2016W20', 'A_Y2016W25', 'A_Y2017W15', 'B_Y2017W30', 'A_Y2017W30', 'B_Y2017W35']
你嘗試過什麼?請先嚐試編寫代碼併發布一些樣本以獲得更多幫助。 – thaavik