为了账号安全,请及时绑定邮箱和手机立即绑定

Python模拟PHP的natSort函数(使用“自然顺序”算法对列表进行排序)

Python模拟PHP的natSort函数(使用“自然顺序”算法对列表进行排序)

四季花海 2019-07-05 16:06:46
Python模拟PHP的natSort函数(使用“自然顺序”算法对列表进行排序)我想知道是否有类似的东西PHP纳特排序函数在Python中?l = ['image1.jpg', 'image15.jpg', 'image12.jpg', 'image3.jpg']l.sort()给予:['image1.jpg', 'image12.jpg', 'image15.jpg', 'image3.jpg']但我想知道:['image1.jpg', 'image3.jpg', 'image12.jpg', 'image15.jpg']更新解决方案这个链接def try_int(s):     "Convert to integer if possible."     try: return int(s)     except: return sdef natsort_key(s):     "Used internally to get a tuple by which s is sorted."     import re    return map(try_int, re.findall(r'(\d+|\D+)', s))def natcmp(a, b):     "Natural string comparison, case sensitive."     return cmp(natsort_key(a), natsort_key(b))def natcasecmp(a, b):     "Natural string comparison, ignores case."     return natcmp(a.lower(), b.lower())l.sort(natcasecmp);
查看完整描述

3 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

你可以去看看第三方纳蒂PyPI图书馆:

>>> import natsort>>> l = ['image1.jpg', 'image15.jpg', 'image12.jpg', 'image3.jpg']
>>> natsort.natsorted(l)['image1.jpg', 'image3.jpg', 'image12.jpg', 'image15.jpg']

完全公开,我是作者。


查看完整回答
反对 回复 2019-07-05
?
浮云间

TA贡献1829条经验 获得超4个赞

此函数可用作key=主张sorted在Python2.x和3.x中:

def sortkey_natural(s):
    return tuple(int(part) if re.match(r'[0-9]+$', part) else part                
    for part in re.split(r'([0-9]+)', s))


查看完整回答
反对 回复 2019-07-05
  • 3 回答
  • 0 关注
  • 666 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信