2 回答

TA贡献1777条经验 获得超10个赞
您可以使用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']
由于版本是排序的关键,因此选择它
x.split('_')[1]
Selected
V20
有不需要的字符“V”,因此通过切片重新选择它[1:]
以获取所有数字。最后,将数字转换为 以
int
进行数字排序。
此外,sorted
默认情况下返回排序的升序。由于您需要降序,请使用reverse=True
.

TA贡献1934条经验 获得超2个赞
正如第一次尝试的那样,它还可以与正则表达式一起使用:
import re
v = 'topic_v7_ext2'
version_no = re.search("^[^_]*_v([0-9]+)", v)
print(version_no.group(1))
该表达式从字符串 (^) 的开头搜索模式,取所有与 _ 不同的字符(我希望你的主题不能有一个,否则两个答案都是错误的),然后找到 '_v' 并取版本号.
不需要匹配_ext,所以不管有没有!
添加回答
举报