【Python】ファイル名の数字順にソート(自然順ソート)する方法

スポンサーリンク
python
スポンサーリンク

ファイルを読み込む際に、ファイル名の数字の部分でソートする方法を解説します。

スポンサーリンク

ソートすると数字順にならない

用意したファイル

以下のように1.txtから14.txtまでの14個のテキストファイルを用意しました。

ソートして読み込む

まずは、ソートしてファイルを読み込み、ファイル名を表示させてみます。

出力

1.txtの次が10.txtとなり数字順に並びませんでした。

数字順に並べ替える

以下のようなコードでファイル名の数字順に並べ替えることができました。

出力

1.txtの次が2.txtになっており、数字順にソートできました。

解説

任意の順番でソートする

任意の順番でソートするためには引数にkeyを指定すると良いようです。

Python, pandasで任意の順番にソート(ソート順を指定)

keyには、リストの各要素の適応する条件を設定します。

例えば、配列の2番目の要素を基準にソートしたい場合は以下のようにします。

出力

文字列から数字を抜き出す

文字列から数値を抜き出す方法はこちらの記事が参考になります。

【Python】文字列から数字だけを取り出したい場合 – Qiita

下のコードでは、sub関数を用いた正規表現での文字列置換で、文字列の数字以外の部分を取り除いています。

  • \D:任意の数字以外
  • re.sub(正規表現, “置換する文字列”, 置換対象の文字列)

読み込んだファイル名の数字の部分だけを出力できます。

タイトルとURLをコピーしました