+def remove_prefix(desc, prefix):
+ """
+ Recursively removes prefix from keys
+ :param desc: dictionary or list to change
+ :param prefix: prefix to remove. Must
+ :return: None, param desc is changed
+ """
+ prefix_len = len(prefix)
+ if isinstance(desc, dict):
+ prefixed_list=[]
+ for k,v in desc.items():
+ if isinstance(v, (list, tuple, dict)):
+ remove_prefix(v, prefix)
+ if isinstance(k, str) and k.startswith(prefix) and k != prefix:
+ prefixed_list.append(k)
+ for k in prefixed_list:
+ desc[k[prefix_len:]] = desc.pop(k)
+ elif isinstance(desc, (list, tuple)):
+ for i in desc:
+ if isinstance(desc, (list, tuple, dict)):
+ remove_prefix(i, prefix)
+