import re
def replacer_factory(spelling_dict):
def replacer(match):
return '{0}{1}{0}'.format(match.group(1), spelling_dict.get(match.group(2), match.group(2)))
return replacer
repkeys = {'modify': 'modifyNew', 'extract': 'extractNew'}
pattern = r'''(['"])(\w+)\1'''
replacer = replacer_factory(repkeys)
filedata = """<fn:modify ele="modify">
<fn:extract name='extract' value="Title"/>
</fn:modify>"""
print( re.sub(pattern, replacer, filedata) )
aW1wb3J0IHJlCmRlZiByZXBsYWNlcl9mYWN0b3J5KHNwZWxsaW5nX2RpY3QpOgogICAgZGVmIHJlcGxhY2VyKG1hdGNoKToKICAgICAgICByZXR1cm4gJ3swfXsxfXswfScuZm9ybWF0KG1hdGNoLmdyb3VwKDEpLCBzcGVsbGluZ19kaWN0LmdldChtYXRjaC5ncm91cCgyKSwgbWF0Y2guZ3JvdXAoMikpKQogICAgcmV0dXJuIHJlcGxhY2VyCgpyZXBrZXlzID0geydtb2RpZnknOiAnbW9kaWZ5TmV3JywgJ2V4dHJhY3QnOiAnZXh0cmFjdE5ldyd9CnBhdHRlcm4gPSByJycnKFsnIl0pKFx3KylcMScnJwpyZXBsYWNlciA9IHJlcGxhY2VyX2ZhY3RvcnkocmVwa2V5cykKZmlsZWRhdGEgPSAiIiI8Zm46bW9kaWZ5IGVsZT0ibW9kaWZ5Ij4KPGZuOmV4dHJhY3QgbmFtZT0nZXh0cmFjdCcgdmFsdWU9IlRpdGxlIi8+CjwvZm46bW9kaWZ5PiIiIgpwcmludCggcmUuc3ViKHBhdHRlcm4sIHJlcGxhY2VyLCBmaWxlZGF0YSkgKQ==