对给定的字符串排序

在这里插入图片描述

#解法一
#来排个序
import re

def order(text):
    if len(text)==0:return ""
    arr=text.split()
    
    #把字符串里面非数字的,替换为''  ^在中括号里代表非  一个或者几个
    
    arr_index=[re.sub('[^\d+]','',each) for each in arr]  # ['2','1',,'4','3']
    new_arr=[each[1] for each in sorted(zip(arr_index,arr),key=lambda x:x[0])]

    #zip返回元组,[('2', 'is2'), ('1', 'This1'), ('4', 'T4est'), ('3', '3a')]
    #sorted返回  ('1', 'This1') ('2', 'is2')     ('3', '3a') ('4', 'T4est')
    
    return (' '.join(new_arr))

order('is2 This1 T4est 3a') 
    
#python中,int的数字和string的数字都能排序
students = [('john', 'A', '15'), ('jane', 'B', '12'), ('dave','B', '10')]
print(sorted(students,key=lambda x: x[2]))

#[('dave', 'B', '10'), ('jane', 'B', '12'), ('john', 'A', '15')]
#解法二
import re
def order(strings):
    
    #?表示非贪婪模式尽可能少地匹配所搜索的字符串
    #re.search().group()一般等价于re.findall()
    
    sort_strings=sorted(strings.split(),key=lambda s:re.findall(r'\d+?',s))
    return ' '.join(sort_strings)

order('is2 This1 T4est 3a')
#解法三
#对给定的字符排个序
import re
a='three3 one1 two2'
b=a.split()
a=sorted(b,key=lambda i:sorted(i))
print(' '.join(a))


在这里插入图片描述

参考:
正则的示例用法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值