剛開始在python上工作並且難以通過多次/不同數量的匹配對字符串列表進行排序。基本上,給定一個字符串列表,我需要通過給定的正則表達式(用戶提供)分割每個字符串,然後按給定的鍵列表(位置)進行排序。密鑰可以是單個整數,也可以按排序順序排列。例如:使用正則表達式使用正則表達式的python排序列表使用不同數量的模式匹配的正則表達式
regex = r'。 (FF | TT | SS)_([ - 。\ d] + v)_([ - 。\ d] + c)_(FF | TT | SS)。「
鍵= [2,1,3]
會通過LOCATION2,LOCATION1,LOCATION3排序字符串列表。
我有固定數量的位置/鍵的作品以下,但不能弄清楚如何讓它變「鑰匙」的數量的工作:
import re
strlist = ["synopsys_SS_2v_-40c_SS.lib","synopsys_SS_1v_-40c_SS.lib","synopsys_SS_2v_-40c_TT.lib","synopsys_FF_3v_-40c_FF.lib", "synopsys_TT_4v_125c_TT.lib", "synopsys_TT_1v_-40c_TT.lib"]
regex = r'.*(FF|TT|SS)_([-\.\d]+v)_([-\.\d]+c)_(FF|TT|SS).*'
key = [2,1,3]
sfids_single = sorted(strlist, key=lambda name: (
re.findall(regex,name)[0][key[0]],
re.findall(regex,name)[0][key[1]],
re.findall(regex,name)[0][key[2]]))
試過以下,但它似乎不工作:
fids_single = sorted(strlist, key=lambda name: (re.findall(regex,name)[0][i] for i in key))
也試過(W/O成功):
for i in key:
strlist.sort(key=lambda name: re.findall(regex,name)[0][key[i]])
預期[R成績:
['synopsys_SS_1v_-40c_SS.lib', 'synopsys_TT_1v_-40c_TT.lib', 'synopsys_SS_2v_-40c_SS.lib', 'synopsys_SS_2v_-40c_TT.lib', 'synopsys_FF_3v_-40c_FF.lib', 'synopsys_TT_4v_125c_TT.lib']
我在錯誤的軌道上完全嗎?任何指導非常感謝。
你有麻煩拆分字符串或排序結果列表? – wwii
你能展示一個期望的輸出樣本嗎? –
這是一個功課問題嗎? – wwii