ホームページ >バックエンド開発 >Python チュートリアル >PHP の natsort 関数に相当する Python を実装するにはどうすればよいですか?

PHP の natsort 関数に相当する Python を実装するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-05 21:36:02569ブラウズ

How to Implement Python's Equivalent of PHP's natsort Function?

PHP の natsort 関数に対する Python の類似物: 自然順序ソート

自然ソート アルゴリズムは、人間が判読できる順序で文字列のリストを並べ替え、数値をグループ化します。他のキャラクターも一緒に。 "12" を "3" 未満として扱うデフォルトの並べ替え方法とは異なり、自然な並べ替えでは ["1"、"10"、"12"、"3"] が生成されます。

Python では、カスタムキー関数を使用して自然な並べ替え関数を実装できます。次のコード スニペットは、PHP の natsort に似た実装を提供します。

<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']
sorted(L)
# Output: ['image1.jpg', 'image12.jpg', 'image15.jpg', 'image3.jpg']
sorted(L, key=natural_key)
# Output: ['image1.jpg', 'image3.jpg', 'image12.jpg', 'image15.jpg']</code>

Unicode 文字列の場合は、isdigital() の代わりに isdecmal() を使用します。 Python 2 のバイト文字列の場合は、bytestring.decode().isdigit() を使用する必要があります。

以上がPHP の natsort 関数に相当する Python を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。