数値が埋め込まれた文字列の並べ替え
数値を含む文字列を扱う場合、アルファベット順に並べ替えても期待どおりの結果が得られない場合があります。このような文字列を正しく並べ替えるには、テキスト要素と数値要素の両方を考慮する必要があります。
人間による並べ替え (自然な並べ替え)
自然な並べ替え。人間による並べ替えとも呼ばれます。は、人間の認識と一致する方法でアイテムを分類するために使用されるテクニックです。このアプローチでは、文字列から数値を抽出し、その数値に基づいて並べ替えます。
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 サイトの他の関連記事を参照してください。