我无法用编辑的文本替换特定模式的特定事件。我已经使用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
我该如何解决这个问题?
感谢。
答案 0 :(得分:1)
我不确定你想要什么,但错误告诉你正确的事:i
不是正则表达式。 re.finditer
返回MatchObject
s的迭代器,可能是此上下文中的字符串。 re.sub
期望正则表达式模式作为其第一个参数。
根据您尝试使用此代码实现的功能,您需要使用与re.sub
不同的功能,或者需要提供实际的正则表达式。如果您可以提供有关您的目标的更多详细信息(可能是基于某些示例输入的预期输出,如@ 200_success建议的那样),那将有所帮助。