繁体   English   中英

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

[英]Python Regex re.sub not working in For loop

我无法用编辑后的文本替换特定模式的特定出现。 我已经使用了for ... loop来提出如何获得特定模式的出现,但是我无法在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)

由于变量“ i”显然不是正则表达式。

错误:

TypeError: first argument must be string or compiled pattern

我该如何解决这个问题?

谢谢。

我不确定您想要什么,但是错误告诉您正确的事情: i不是正则表达式模式。 re.finditer返回的迭代器MatchObject在这种情况下S,大概字符串。 re.sub将正则表达式模式作为其第一个参数。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM