在re.sub方法(Python)中指定替换的函数

时间:2016-04-08 19:30:55

标签: python regex python-3.x

尝试使用正则表达式对字符串执行替换。

re.sub(regex, repl_func, content)

问题是当我需要替换依赖于repl_func的匹配对象时,我不明白如何通过regex进行替换。即我将使用匹配的对象作为字典键来获取需要替换该特定对象的匹配值。

    for mobj in re.finditer(regex, content):
        t = mobj.lastgroup
        v = match_obj.group(t)

        if t == 'NAME':
            ...
        elif t == '\n':
            ...

我试图迭代所有匹配的对象,如上所示,但无法弄清楚如何应用re.sub。如果我理解正确,我的第一个代码段中的repl_function需要以某种方式知道这是来自该正则表达式的匹配对象。

任何想法,尤其是使用代码的想法都会受到高度赞赏,因为我现在才开始使用Python。

1 个答案:

答案 0 :(得分:1)

re.sub()函数将匹配的对象传递给repl_function作为参数,用匹配的字符串替换该函数的返回结果。如果要将匹配的对象替换为字典中的特定字符串,则只需使用函数来处理:

def repl_func(matched_obj):
    my_dict = {'NAME':'rep1', '\n':'rep2'}
    try:
        match = matched_obj.group(0)
    except AttributeError:
        matched = ''
        # Or raise an exception
    else:
        return my_dict.get(match, '')

re.sub(regex, repl_func, content)