-4

Example:

Input:

{"Contact Title": "Owner Name"}

Expected Output:

{"ContactTitle": "Owner Name"}
martineau
  • 119,623
  • 25
  • 170
  • 301

1 Answers1

0

example using json object_hooks (supports nested dictionaries):

In [1]: import json
   ...: 
   ...: example_dict = {'ke  y1': 'value1',
   ...:  'ke y2': 'value2',
   ...:  'k ey3': {'key3a': 'value3a'},
   ...:  'key 4': {'key 4a': {'key4a   a': {'key 4 4 4 44': 'value44 4   44'},
   ...:    'key4 ab': 'value  4ab',
   ...:    'key4ac': 'va lue4ac'},
   ...:   'k ey4b': 'valu  e4b'}}
   ...: 
   ...: def remove_spaces(obj):
   ...:     for key in obj.keys():
   ...:         new_key = key.replace(" ","")
   ...:         if new_key != key:
   ...:             obj[new_key] = obj[key]
   ...:             del obj[key]
   ...:     return obj
   ...: 
   ...: new_json = json.loads(json.dumps(example_dict), object_hook=remove_spaces) 
   ...: 
   ...: new_json
   ...: 
Out[1]: 
{u'key1': u'value1',
 u'key2': u'value2',
 u'key3': {u'key3a': u'value3a'},
 u'key4': {u'key4a': {u'key4aa': {u'key44444': u'value44 4   44'},
   u'key4ab': u'value  4ab',
   u'key4ac': u'va lue4ac'},
  u'key4b': u'valu  e4b'}}

there's another method (even better as long as you don't exceed recursion depth):

In [2]: def dict_key_unspacer(d):
    ...:     new = {}
    ...:     for k, v in d.iteritems():
    ...:         if isinstance(v, dict):
    ...:             v = dict_key_unspacer(v)
    ...:         new[k.replace(' ', '')] = v
    ...:     return new
    ...: 
    ...: result_dict = dict_key_unspacer(example_dict)
    ...: 
    ...: result_dict
    ...: 
Out[2]: 
{'key1': 'value1',
 'key2': 'value2',
 'key3': {'key3a': 'value3a'},
 'key4': {'key4a': {'key4aa': {'key44444': 'value44 4   44'},
   'key4ab': 'value  4ab',
   'key4ac': 'va lue4ac'},
  'key4b': 'valu  e4b'}}
sur.la.route
  • 440
  • 3
  • 11
internety
  • 364
  • 3
  • 8