2024-06-26 13:32:24 发布
网友
对一个字符串列表进行排序的最简单方法是什么?有些字符串的结尾是数字,有些字符串的结尾是3位,有些字符串的结尾是4位:
>>> list = ['asdf123', 'asdf1234', 'asdf111', 'asdf124'] >>> list.sort() >>> print list ['asdf111', 'asdf123', 'asdf1234', 'asdf124']
应该把1234放在最后。有什么简单的方法可以做到这一点吗?
l = ['asdf123', 'asdf1234', 'asdf111', 'asdf124'] l.sort(cmp=lambda x,y:cmp(int(x[4:]), int(y[4:]))
is there an easy way to do this?
没有
完全不清楚真正的规则是什么。“有些有3位,有些有4位”并不是一个非常精确或完整的规范。所有的例子都在数字前面显示4个字母。这总是真的吗?
import re key_pat = re.compile(r"^(\D+)(\d+)$") def key(item): m = key_pat.match(item) return m.group(1), int(m.group(2))
这个key函数可以做您想要的事情。或者可能太复杂了。或者模式是真正的r"^(.*)(\d{3,4})$",或者规则更加模糊。
key
r"^(.*)(\d{3,4})$"
>>> data= ['asdf123', 'asdf1234', 'asdf111', 'asdf124'] >>> data.sort( key=key ) >>> data ['asdf111', 'asdf123', 'asdf124', 'asdf1234']
是的
您可以使用natsort模块。
>>> from natsort import natsorted >>> natsorted(['asdf123', 'asdf1234', 'asdf111', 'asdf124']) ['asdf111', 'asdf123', 'asdf124', 'asdf1234']
完全公开,我是包的作者。
没有
完全不清楚真正的规则是什么。“有些有3位,有些有4位”并不是一个非常精确或完整的规范。所有的例子都在数字前面显示4个字母。这总是真的吗?
这个
key
函数可以做您想要的事情。或者可能太复杂了。或者模式是真正的r"^(.*)(\d{3,4})$"
,或者规则更加模糊。是的
您可以使用natsort模块。
完全公开,我是包的作者。
相关问题 更多 >
编程相关推荐