ホームページ > バックエンド開発 > Python チュートリアル > 埋め込まれた数値と浮動小数点を含む文字列を自然に並べ替えるにはどうすればよいですか?

埋め込まれた数値と浮動小数点を含む文字列を自然に並べ替えるにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-30 06:59:14
オリジナル
609 人が閲覧しました

How Can I Sort Strings Containing Embedded Numbers and Floats Naturally?

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

数値を含む文字列のリストの並べ替えは、データ型が異なるため問題が発生する可能性があります。次のアプローチは、これらの文字列を正しく並べ替えるためのソリューションを提供します。

文字列を前処理するために、ヘルパー関数 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 サイトの他の関連記事を参照してください。

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