2 回答

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超10個(gè)贊
您可以使用sorted或list.sort與key:
sorted(l, key=lambda x:int(x.split('_')[1][1:]), reverse=True)
['topic_v20_ext2',
'topic_v10_ext2',
'topic_v7_ext2',
'topic_v5_ext2',
'topic_v2_ext2']
x.split('_')
: 返回 splitedstr
,例如:['topic', 'v20', 'ext2']
由于版本是排序的關(guān)鍵,因此選擇它
x.split('_')[1]
Selected
V20
有不需要的字符“V”,因此通過切片重新選擇它[1:]
以獲取所有數(shù)字。最后,將數(shù)字轉(zhuǎn)換為 以
int
進(jìn)行數(shù)字排序。
此外,sorted
默認(rèn)情況下返回排序的升序。由于您需要降序,請(qǐng)使用reverse=True
.

TA貢獻(xiàn)1934條經(jīng)驗(yàn) 獲得超2個(gè)贊
正如第一次嘗試的那樣,它還可以與正則表達(dá)式一起使用:
import re
v = 'topic_v7_ext2'
version_no = re.search("^[^_]*_v([0-9]+)", v)
print(version_no.group(1))
該表達(dá)式從字符串 (^) 的開頭搜索模式,取所有與 _ 不同的字符(我希望你的主題不能有一個(gè),否則兩個(gè)答案都是錯(cuò)誤的),然后找到 '_v' 并取版本號(hào).
不需要匹配_ext,所以不管有沒有!
添加回答
舉報(bào)