在python中查找并替换部分字典值
我有一个python字典,我想查找并替换字典值中的部分字符。我正在使用python 2.7。 我的字典是在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
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}}