ワイルドカードを使用して、リスト内のいくつかのファイル名を探しています。
from datetime import date
dt = str("RT" + date.today().strftime('%d%m'))
print dt # RT0701
基本的に私はこのパターンを見つける必要がありますdt + "*.txt"
:
RT0701*.txt
このリストの内容:
l = ['RT07010534.txt', 'RT07010533.txt', 'RT02010534.txt']
Forループでそれを行うにはどうすればよいですか?
これには fnmatch.filter()
を使用できます:
import fnmatch
l = ['RT07010534.txt', 'RT07010533.txt', 'RT02010534.txt']
pattern = 'RT0701*.txt'
matching = fnmatch.filter(l, pattern)
print(matching)
出力:
['RT07010534.txt', 'RT07010533.txt']
このようなsth(別のオプションである正規表現を使用せずに)
matches = []
for file in list:
if file.startswith(dt) and '.txt' == file[-4:]: matches.append(file)
print (matches)
次のような正規表現を使用できます。
import re
pat = re.compile('%s.*\.txt' % dt)
for can in l:
if(pat.search(can)):
print can