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>