[英]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.