python对不规则的列表进行排序

想要对一个不规则的列表进行排序:

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相匹配的全部字串,返回形式为数组)

你可能感兴趣的:(python对不规则的列表进行排序)