ホームページ > バックエンド開発 > Python チュートリアル > Python で数字を含む文字列を自然に並べ替える方法

Python で数字を含む文字列を自然に並べ替える方法

DDD
リリース: 2024-11-30 01:46:10
オリジナル
522 人が閲覧しました

How to Sort Strings Containing Numbers Naturally in Python?

数値が埋め込まれた文字列の並べ替え

数値を含む文字列を扱う場合、アルファベット順に並べ替えても期待どおりの結果が得られない場合があります。このような文字列を正しく並べ替えるには、テキスト要素と数値要素の両方を考慮する必要があります。

人間による並べ替え (自然な並べ替え)

自然な並べ替え。人間による並べ替えとも呼ばれます。は、人間の認識と一致する方法でアイテムを分類するために使用されるテクニックです。このアプローチでは、文字列から数値を抽出し、その数値に基づいて並べ替えます。

Python では、次のカスタム 並べ替えキーを使用して自然な並べ替えを実装できます:

def natural_keys(text):
    return [int(c) if c.isdigit() else c for c in re.split(r'(\d+)', text)]
ログイン後にコピー

これ関数は、文字列を文字と数値に分割し、数値を整数に変換します。ソートされたリストは、このカスタム キーを使用して sort() 関数を呼び出すことによって取得されます:

alist = ["something1", "something12", "something17", "something2", "something25", "something29"]
alist.sort(key=natural_keys)
print(alist)
ログイン後にコピー

出力は次のようになります:

['something1', 'something2', 'something12', 'something17', 'something25', 'something29']
ログイン後にコピー

Float による文字列のソート

文字列に浮動小数点数が含まれている場合は、自然な並べ替えキーを変更して抽出して浮動小数点に変換できます。次の正規表現を使用します:

def natural_keys(text):
    return [float(c) if c.isdigit() else c for c in re.split(r'[+-]?([0-9]+(?:[.][0-9]*)?|[.][0-9]+)', text)]
ログイン後にコピー

この変更されたキーにより、浮動小数点数を含む文字列もソートできます:

alist = ["something1", "something2", "something1.0", "something1.25", "something1.105"]
alist.sort(key=natural_keys)
print(alist)
ログイン後にコピー

出力は次のようになります:

['something1', 'something1.0', 'something1.105', 'something1.25', 'something2']
ログイン後にコピー

人間による並べ替え技術を利用することで、人間の直感に沿った方法で、数値が埋め込まれた文字列を効率的に並べ替えることができます。

以上がPython で数字を含む文字列を自然に並べ替える方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート