python字符串排序_按照字符串中的数组进行排序的方法(python)

有时候处理数据时,想要按照字符串中的数字的大小进行排序。

譬如,存在一组记录文件,分别为‘1.dat’,‘2.dat‘...

当我把该文件夹中的所有记录文件名读到一个列表中,这些字符串的排列方式为:

L3Byb3h5L2h0dHAvaW1hZ2VzMjAxNS5jbmJsb2dzLmNvbS9ibG9nLzcyOTc1OC8yMDE3MDUvNzI5NzU4LTIwMTcwNTA1MTYwMDIyMTY0LTQyNDI1NzIzMC5wbmc=.jpg

如何让这些字符串按照数字排列?

1、首先通过正则表达式,提取出字符串中的数字

2、排序,选择built-in函数sorted进行排序

sorted(iterable, cmp=None, key=None, reverse=False)

iterable:是可迭代类型;

cmp:用于比较的函数,比较什么由key决定;

key:用列表元素的某个属性或函数进行作为关键字,有默认值,迭代集合中的一项;

reverse:排序规则. reverse = True 降序 或者 reverse = False 升序,有默认值。

返回值:是一个经过排序的可迭代类型,与iterable一样。

所以说排序方式按照数字拍的话,key就要对应里面的数字。

所以,这个问题只需一句话解决:

s = [‘1.dat‘,‘10.dat‘,‘5.dat‘]

new = sorted(s,key = lambda i:int(re.match(r‘(\d+)‘,i).group()))

print new

得到的结果即为

L3Byb3h5L2h0dHAvaW1hZ2VzMjAxNS5jbmJsb2dzLmNvbS9ibG9nLzcyOTc1OC8yMDE3MDUvNzI5NzU4LTIwMTcwNTA1MTYzNDQ1ODk4LTU1MTc3NzgzOC5wbmc=.jpg

对于该操作,同样可以使用list.sort(),python2.4之后,list.sort和sorted都添加了一个key参数用来指定一个函数

不同的地方是:内置sorted返回一个新的列表,而list.sort是对列表进行操作

s = [‘1.dat‘,‘10.dat‘,‘5.dat‘]

s.sort(key = lambda i:int(re.match(r‘(\d+)‘,i).group()))

print s

时间: 05-03

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值