import re
from functools import partial
pattern = '^[\w-]*_(?P<pos>[A-Z]\d{2})_T\d{4}(?P<fID>F\d{3})L\d{2}A\d{2}(?P<zID>Z\d{2})(?P<cID>C\d{2})\.tif$'
filename = '151006_655866_Z01_T0001F015L01A02Z01C03.tif'
def replace_closure(subgroup, replacement, m):
if m.group(subgroup) not in [None, '']:
start = m.start(subgroup)
end = m.end(subgroup)
return m.group()[:start] + replacement + m.group()[end:]
subgroup_list = ['pos', 'fID', 'zID', 'cID']
replacement = '---'
for subgroup in subgroup_list:
print re.sub(pattern, partial(replace_closure, subgroup, replacement), filename)
aW1wb3J0IHJlCmZyb20gZnVuY3Rvb2xzIGltcG9ydCBwYXJ0aWFsCgpwYXR0ZXJuID0gJ15bXHctXSpfKD9QPHBvcz5bQS1aXVxkezJ9KV9UXGR7NH0oP1A8ZklEPkZcZHszfSlMXGR7Mn1BXGR7Mn0oP1A8eklEPlpcZHsyfSkoP1A8Y0lEPkNcZHsyfSlcLnRpZiQnCmZpbGVuYW1lID0gJzE1MTAwNl82NTU4NjZfWjAxX1QwMDAxRjAxNUwwMUEwMlowMUMwMy50aWYnCgoKZGVmIHJlcGxhY2VfY2xvc3VyZShzdWJncm91cCwgcmVwbGFjZW1lbnQsIG0pOgogICAgaWYgbS5ncm91cChzdWJncm91cCkgbm90IGluIFtOb25lLCAnJ106CiAgICAgICAgc3RhcnQgPSBtLnN0YXJ0KHN1Ymdyb3VwKQogICAgICAgIGVuZCA9IG0uZW5kKHN1Ymdyb3VwKQogICAgICAgIHJldHVybiBtLmdyb3VwKClbOnN0YXJ0XSArIHJlcGxhY2VtZW50ICsgbS5ncm91cCgpW2VuZDpdCgpzdWJncm91cF9saXN0ID0gWydwb3MnLCAnZklEJywgJ3pJRCcsICdjSUQnXQpyZXBsYWNlbWVudCA9ICctLS0nCgpmb3Igc3ViZ3JvdXAgaW4gc3ViZ3JvdXBfbGlzdDoKICAgIHByaW50IHJlLnN1YihwYXR0ZXJuLCBwYXJ0aWFsKHJlcGxhY2VfY2xvc3VyZSwgc3ViZ3JvdXAsIHJlcGxhY2VtZW50KSwgZmlsZW5hbWUpCg==