您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

PHP的natsort函数的Python类似物(使用“自然顺序”算法对列表进行排序)

PHP的natsort函数的Python类似物(使用“自然顺序”算法对列表进行排序)

从我对自然排序算法的回答:

import re
def natural_key(string_):
    """See http://www.codinghorror.com/blog/archives/001018.html"""
    return [int(s) if s.isdigit() else s for s in re.split(r'(\d+)', string_)]

例:

>>> L = ['image1.jpg', 'image15.jpg', 'image12.jpg', 'image3.jpg']
>>> sorted(L)
['image1.jpg', 'image12.jpg', 'image15.jpg', 'image3.jpg']
>>> sorted(L, key=natural_key)
['image1.jpg', 'image3.jpg', 'image12.jpg', 'image15.jpg']

支持Unicode字符串,.isdecimal()应使用而不是.isdigit()。请参阅@phihag的注释中的示例。相关:如何显示Unicode数值属性

.isdigit()int()在某些语言环境中,Python 2上的字节串也可能会失败(返回值不被接受),例如,在Windows的cp1252语言环境中,该字符串可能会失败(“ \ xb2”(“²”))

php 2022/1/1 18:18:44 有453人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶