私はPythonを使用していますが、さまざまなファイルタイプのファイル名のリストがあります。テキストファイルは次のようになります。
01.txt
02.txt
03.txt
...
テキストファイルがすべてこの方法で番号付けされていると仮定しましょう。ここで、1から25の範囲の番号を持つすべてのテキストファイルを取得したいと思います。そこで%02i.txt
、一致するすべてのファイル名を識別するために、GUIを介したようなフォーマット文字列を提供したいと思います。
これまでの私の解決策は、ネストされたfor
ループです。外側のループはリスト全体を反復処理し、内側のループはファイルごとに1から25までカウントします。
fmt = '%02i.txt'
for f in files:
for i in range(1, 25+1):
if f == fmt % i:
# do stuff
このネストされたループはあまりきれいに見えず、複雑さはO(n²)です。そのため、非常に長いリストでは時間がかかる場合があります。これを行うためのよりスマートな/pythonicな方法はありますか?
はい、のような正規表現を使用することもできますが、を使用し^\d{2}\.txt$
たフォーマット文字列の%
方が入力がはるかに簡単です。