2017-09-11 10 views
0

私は、サーバーに絶えずダウンロードされている空間データセットファイルをソートして処理することを目的としたスクリプトを用意しています。私のリストには、現在、およそ次のようになります。あなたが見ることができるように各要素に現れる文字列のリストを並べ替えます。

list = ['file.t00Z.wrff02.grib2', 'file.t00Z.wrff03.grib2', 'file.t00Z.wrff00.grib2', 'file.t00Z.wrff05.grib2', 'file.t00Z.wrff04.grib2', 'file.t00Z.wrff01.grib2', 'file.t06Z.wrff01.grib2', 'file.t06Z.wrff00.grib2', 'file.t06Z.wrff02.grib2', ...]

、各ファイルには、特定の命名規則があります。

このリストのファイルは順番に処理されますが、各ファイル名(00,01,02)の "wrff"に続く2桁の時間順に処理する必要があります。 )。

私は現在、必要に応じて "file.t"に続く2桁の数字と一致しないファイルをリストから削除する正規表現を持っています。しかし、部分文字列でリスト要素をソートする簡単な方法はありますか?

注:私はこれらのファイルを変更時間で単純にソートすることを選択しますが、多くの場合、データディレクトリに順不同で表示されます。

+2

これは、上記の質問の複製ではありません。なぜなら、希望の順序は必ずしも自然な辞書順ではないからです。 – dugup

+3

@cᴏʟᴅs 'これは重複していません。'自然な順序で英数字キーを持つ辞書を並べ替えると '辞書内の項目を含み、' Pythonには文字列自然な並べ替え機能が組み込まれていますか?それは辞書編集的順序を伴わない。最後に、両方の "重複"回答はこの投稿の範囲外です。 – Ajax1234

+0

私は同意すると、それは複製と見なされるのに似ていないようです。 –

答えて

4

sortedまたはsortを使用して、キーとして使用する数値を抽出するラムダ関数を指定できます。

+0

私は少しこれで一発を与えるつもりです! – nat5142

+0

'list.sort(key = lambda x:x [x.find( 'wrff'):x.find( '。grib2')])' – nat5142

+0

あなたは私がどのようにしてこの形式を使用して、文字列の最後に表示される文字を一致させますか? – nat5142