MST

星途 面试题库

面试题:Python正则表达式在文本替换中的高级应用

有一段复杂的自然语言文本,其中包含一些特定格式的变量,格式为${变量名},变量名由字母、数字和下划线组成。同时有一个字典,记录了变量名到实际值的映射。请使用Python正则表达式将文本中的变量替换为实际值,要求处理嵌套变量情况,例如${var1_${var2}},假设var2的值为sub,var1_sub的值为replacement,那么最终替换结果为replacement。
11.2万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
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 函数中,先处理变量内部可能存在的嵌套变量,再从字典中获取最终的变量值进行替换。如果变量不存在于字典中,则保持原变量格式不变。最后返回替换后的文本。