面试题答案
一键面试import re
def replace_variables(text, var_dict):
def replace(match):
var = match.group(1)
while '${' in var:
sub_match = re.search(r'\${([^}]+)}', var)
if sub_match:
sub_var = sub_match.group(1)
sub_value = var_dict.get(sub_var, '')
var = var.replace('${' + sub_var + '}', sub_value)
return var_dict.get(var, '${' + var + '}')
return re.sub(r'\${([^}]+)}', replace, text)
# 示例使用
text = "复杂文本 ${var1_${var2}} 更多文本"
var_dict = {'var2': 'sub', 'var1_sub': 'replacement'}
result = replace_variables(text, var_dict)
print(result)
上述代码中,replace_variables
函数接收一个文本和变量字典作为参数。通过 re.sub
结合一个替换函数 replace
来处理文本中的变量替换。在 replace
函数中,先处理变量内部可能存在的嵌套变量,再从字典中获取最终的变量值进行替换。如果变量不存在于字典中,则保持原变量格式不变。最后返回替换后的文本。