You could use the following regular expression:
mydict = {
"root['toto']": {'new_value': 'abcdef', 'old_value': 'ghijk'},
"test['aaa']": {'new_value': 'abcdef', 'old_value': 'ghijk'},
"root['bb']": {'new_value': 'abcdef', 'old_value': 'ghijk'},
"ccc": {'new_value': 'abcdef', 'old_value': 'ghijk'}
}
for key, value in mydict.items():
new_key = re.sub(r"(\w+\[')(\w+)('\])", r"\2", key)
if new_key != key:
mydict[new_key] = mydict.pop(key) # Remove the old entry and add the entry back with new key
print mydict
Giving you an updated mydict containing:
{'aaa': {'new_value': 'abcdef', 'old_value': 'ghijk'},
'bb': {'new_value': 'abcdef', 'old_value': 'ghijk'},
'toto': {'new_value': 'abcdef', 'old_value': 'ghijk'},
'ccc': {'new_value': 'abcdef', 'old_value': 'ghijk'}}
{ k[6:-2] if k[:6]=="root['" else k :v for k,v in d.items() }wheredis your old dictionary