Python Regex re.sub在For循环中不起作用

时间:2015-03-20 20:54:52

标签: python regex for-loop text replace

我无法用编辑的文本替换特定模式的特定事件。我已经使用for ...循环来了解如何获取特定模式的模式,但我无法将其与re.sub语句一起使用。

这是我的Python 2代码:

def split(content):
    count = 0
    s = ""
    for i in re.finditer(r'(?s)(\\thinhline\n\\\\\[-16pt]\n)([a-zA-Z\s\(\)]+)(.*?)(\n *\\\\)', content):
        count= count + 1
        x =  len(re.findall('^\s*&', i.group(3), re.M))
        if x < 6:
            break
        elif x >= 6:
            g = normalizationConstraints(i.group(3),i.group(2)) + "\n"
            s = str(g) + "\n"
            content = re.sub(i,s,content)
    return content

错误在线:

         content = re.sub(i,s,content)

因为变量&#34; i&#34;显然不是正则表达式。

错误:

TypeError: first argument must be string or compiled pattern

我该如何解决这个问题?

感谢。

1 个答案:

答案 0 :(得分:1)

我不确定你想要什么,但错误告诉你正确的事:i不是正则表达式。 re.finditer返回MatchObject s的迭代器,可能是此上下文中的字符串。 re.sub期望正则表达式模式作为其第一个参数。

根据您尝试使用此代码实现的功能,您需要使用与re.sub不同的功能,或者需要提供实际的正则表达式。如果您可以提供有关您的目标的更多详细信息(可能是基于某些示例输入的预期输出,如@ 200_success建议的那样),那将有所帮助。