在python中查找并替换部分字典值

在python中查找并替换部分字典值,python,dictionary,replace,Python,Dictionary,Replace,我有一个python字典,我想查找并替换字典值中的部分字符。我正在使用python 2.7。 我的字典是 data1 = {'customer_order': {'id': '20'}, 'patient': {'birthdate': None, 'medical_proc': None, 'medical_ref': 'HG_CTRL12', 'name': 'Pati

我有一个python字典,我想查找并替换字典值中的部分字符。我正在使用python 2.7。 我的字典是

data1 = {'customer_order': {'id': '20'},
         'patient': 
             {'birthdate': None,
             'medical_proc': None,
             'medical_ref': 'HG_CTRL12',
             'name': 'Patient_96',
             'sex': None},
          'physician_name': 'John Doe'
         }
我只想在字典的值中将下划线更改为反斜杠下划线,在本例中,仅针对Patient_96和HG_CTRL12

我想将其更改为以下内容:

 data1 = {'customer_order': {'id': '20'},
          'patient': 
              {'birthdate': None,
               'medical_proc': None,
               'medical_ref': 'HG\_CTRL12',
               'name': 'Patient\_96',
               'sex': None},
          'physician_name': 'John Doe'
         }

感谢您的帮助

此函数递归地将字典值中的下划线替换为
replace\u char

def replace_underscores(a_dict, replace_char):
    for k, v in a_dict.items():
        if not isinstance(v, dict):
            if v and '_' in v:
                a_dict[k] = v.replace('_', replace_char)
        else:
            replace_underscores(v, replace_char)

更多关于
isinstance()

患者应改为什么?您的问题是,将
'
更改为
'
。我看不出有什么不同?抱歉,我的问题中省略了下划线。如果您发布数据的“之前和之后”,可能会更清楚。@JoanaRosadoCoelho即使是当前的编辑也没有意义。“我想将下划线改为\下划线”是什么意思?我通常都希望问题尽可能精确,但替换字符串的确切含义在这里并不重要,不是吗?棘手的部分是递归处理嵌套字典。
>>> for i in data1:
...     if type(data1[i]) is str:
...             if data1[i]:
...                     data1[i] = data1[i].replace('_','\_')
...     elif type(data1[i]) is dict:
...             for j in data1[i]:
...                     if data1[i][j]:
...                             data1[i][j] = data1[i][j].replace('_','\_')
... 
>>> 
>>> 
>>> data1
{'physician_name': 'John Doe', 'customer_order': {'id': '20'}, 'patient': {'medical_ref': 'HG\\_CTRL12', 'medical_proc': None, 'name': 'Patient\\_96', 'birthdate': None, 'sex': None}}