私は最近、正規表現の力を学び、利用していますos.walk()
。次のように、から返されたファイルのタプルリストがあります。
files = ('s8_00.tif', 's9_00.tif', 's10_000.tif', 's11_00.tif')
私はそれを次のように見せようとしています:
files = ('s8_##.tif', 's9_##.tif', 's10_###.tif', 's11_##.tif')
これを使ってみました。
pad2 = re.compile(r'_00?')
for root, dirs, files in seqDirs:
pad = files[0]
p = pad2.sub("#", pad)
print p
これは以下を返します:
p = ('s8#.tif', 's9#.tif', 's10#0.tif', 's11#.tif')
そこで、次のように表現を変更しました。
pad2 = re.compile('(_)0+')
私に与える:
p = ('s8#.tif', 's9#.tif', 's10#.tif', 's11#.tif')
私のp = pad2.sub
機能に問題がありますか?または、コンパイルされた式内に問題がありますか? それとも、それ"_"
を台無しにしているのは表現の存在ですか?
テストするためだけに関数内に式を渡そうとpad2.sub
しましたが、もちろんうまくいきませんでした。ここで何かが少し欠けていることを知っており、少し立ち往生しています。
ロジックの説明とともに、ありとあらゆる助けをいただければ幸いです。