import re string = 'Host: ${username}\nX-Online-Host: ${Ua}\n' vars_dict = { "username": 'www.baidu.com:80' } # print(re.findall('\${(.*?)}', string)) def _sub_variable(text=None, vars_dict=None): if not isinstance(text, str): return text for variable_name in re.findall('\${(.*?)}', text): try: value = vars_dict[variable_name] except: value = '' text = text.replace('${%s}' % variable_name, str(value)) return text def _sub_variable_auto(data=None, vars_dict=None): if isinstance(data, list): for i in range(len(data)): if not isinstance(data[i], str): continue data[i] = _sub_variable(text=data[i], vars_dict=vars_dict) return data if isinstance(data, dict): for k in data.keys(): if not isinstance(data[k], str): continue data[k] = _sub_variable(text=data[k], vars_dict=vars_dict) return data if isinstance(data, str): return _sub_variable(data, vars_dict=vars_dict) return data # print(_sub_variable(text=string, vars_dict=vars_dict)) print(_sub_variable_auto(data=["Host: ${username}\n", "X-Host: ${username}\n"], vars_dict=vars_dict)) print(_sub_variable_auto(data={ "X-Online-Host": '${username}:443', "Host": '${username}${username}', 2: 163, 3: None }, vars_dict=vars_dict)) print(_sub_variable_auto(data='H=${username}', vars_dict=vars_dict)) print(_sub_variable_auto(data=False, vars_dict=vars_dict)) # a = '123' # def aa(text=''): # text = text.replace('1','δΈ€') # return text # # print(aa(a)) # print(a) r = {"r": 1} s = {"r": 2} d = {} d.update(r) d.update(s) print(d)