PHP natsort 函数的 Python 等效项:自然顺序排序
PHP natsort 函数用于使用“自然顺序”对列表进行排序以人类可读的方式处理包含数字的字符串的算法。 Python 没有与 natsort 完全相同的功能,但有可用的自定义解决方案。
一种方法是使用 Python 内置函数的组合:
<code class="python">import re def try_int(s): "Convert to integer if possible." try: return int(s) except: return s def natsort_key(s): "Used internally to get a tuple by which s is sorted." 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())</code>
对使用自然顺序的列表:
<code class="python">l = ['image1.jpg', 'image15.jpg', 'image12.jpg', 'image3.jpg'] l.sort(natcasecmp)</code>
支持 Unicode 字符串的另一种方法是使用基于 Python 的 natural_key 函数的自定义键函数:
<code class="python">import re def natural_key(string_): """See https://blog.codinghorror.com/sorting-for-humans-natural-sort-order/""" return [int(s) if s.isdigit() else s for s in re.split(r'(\d+)', string_)]</code>
示例:
<code class="python">l = ['image1.jpg', 'image15.jpg', 'image12.jpg', 'image3.jpg'] l.sort(key=natural_key)</code>
以上是如何在Python中实现像PHP的natsort函数一样的自然顺序排序?的详细内容。更多信息请关注PHP中文网其他相关文章!