想要对一个不规则的列表进行排序:
list2 = ['4d','3v','5b','a2','7q']
使用正则表达式来做:
import re
def sort_key(s):
# 排序关键字匹配
# 匹配开头数字序号
if s:
try:
c = re.findall('^\d+', s)[0]
except:
c = -1
return int(c)
list2 = ['4d','3v','5b','a2','7q']
sorted(list2,key = sort_key)
#list2.sort(key = sort_key)
#sorted函数是可以返回一个新的列表,而sort函数则是对原列表进行处理
这里对正则的地方解释一下:^:行开头 \d:数字 +:出现至少1次
re.findall('^\d+', s)返回的数据是:['4']加上[0]之后返回的是4,证明正则 re.findall (返回string中所有与pattern相匹配的全部字串,返回形式为数组)
网友评论