python.replace()正则expression式

我试图抓住“</ html>”标签后面的所有内容并将其删除,但是我的代码似乎没有做任何事情。 .replace()不支持正则expression式?

python

z.write(article.replace('</html>.+', '</html>')) 

不。Python中的正则expression式由re模块处理。

 article = re.sub(r'(?is)</html>.+', '</html>', article) 

你可以使用正则expression式re模块,但正则expression式可能是你想要的矫枉过正。 我可能会尝试类似的东西

 z.write(article[:article.index("</html>") + 7] 

这是更清洁,应该比基于正则expression式的解决scheme快得多。

@ Ignaccio是对的+1,我只是提供更多的例子。

为了用正则expression式replace文本,使用re.sub函数:

sub(pattern,repl,string [,count,flags])

它将以string传递的文本replace模式的非重叠实例。 如果需要分析匹配以提取有关特定组捕获的信息,对于isntance,可以将函数传递给string参数。 更多信息在这里 。

例子

 >>> import re >>> re.sub(r'a', 'b', 'banana') 'bbnbnb' >>> re.sub(r'/\d+', '/{id}', '/andre/23/abobora/43435') '/andre/{id}/abobora/{id}' 

对于这种特殊情况,如果使用re模块是矫枉过正的,那么使用split (或rsplit )方法怎么样

 se='</html>' z.write(article.split(se)[0]+se) 

例如,

 #!/usr/bin/python article='''<html>Larala Ponta Monta </html>Kurimon Waff Moff ''' z=open('out.txt','w') se='</html>' z.write(article.split(se)[0]+se) 

输出out.txt

 <html>Larala Ponta Monta </html>