数値が埋め込まれた文字列の並べ替え
数値を含む文字列のリストの並べ替えは、データ型が異なるため問題が発生する可能性があります。次のアプローチは、これらの文字列を正しく並べ替えるためのソリューションを提供します。
文字列を前処理するために、ヘルパー関数 atoi() を定義します。この関数は、文字列が数値を表す場合は整数に変換します。それ以外の場合は、元の文字列を返します。これは、文字列から数値コンポーネントを抽出するのに役立ちます。
次に、正規表現を使用して文字列を分割し、各コンポーネントに atoi() 関数を適用する、natural_keys() 関数を紹介します。これにより、リストが並べ替え可能な形式に変換されます。
sort() メソッドを使用して、natural_keys() 関数をキー引数として適用します。これにより、アルファベットと数値の両方のコンポーネントを考慮してリストが人間の順序で並べ替えられます。
例:
次の文字列リストを考えてみましょう:
["something1", "something12", "something17", "something2", "something25", "something29"]
natural_keys() 関数を使用してこのリストを並べ替える生成物:
['something1', 'something2', 'something12', 'something17', 'something25', 'something29']
浮動小数点を使用したテキストの並べ替え:
浮動小数点数を含めるように機能を拡張するには、浮動小数点数と一致するように Natural_keys() の正規表現パターンを変更できます。 -pointnumbers.
return [ atof(c) for c in re.split(r'[+-]?([0-9]+(?:[.][0-9]*)?|[.][0-9]+)', text) ]
ここで、atof() は文字列の変換を試みるヘルパー関数です。
これにより、アルファベットと浮動小数点の両方のコンポーネントを含む文字列を並べ替えることができます。
以上が埋め込まれた数値と浮動小数点を含む文字列を自然に並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。