2017-08-17 56 views
-1

我有一堆HTML文本,我希望找到所有带有标记img的文本模式并更改它们的模板。如果最初的文字是:在Python中查找并替换文本模式

<img alt=src="http://www.example.com/image.png" /> 
输出它会成为这个

[insert picture: []("http://www.example.com/image.png")] 

我如何处理这个?

+0

标签(荷兰国际集团)?你的意思是(img)? –

+6

跟我重复:不要用正则表达式解析HTML –

+0

@keyvanvafaee是的,我编辑了,谢谢。 – cookiedough

回答

1

你的例子看起来很简单,你可以做这样的事情:

In [140]: my_str = '<img alt=src="http://www.example.com/image.png" />' 
In [141]: re.sub(r'\<img.*src\=\"(http\://.*\.png)\".*\/\>', '[insert picture: []("\\1")]', my_str) 
Out[141]: '[insert picture: []("http://www.example.com/image.png")]' 
0

不要试图推倒重来。

使用urlextract模块

from urlextract import URLExtract 

text="<img alt=src="http://www.example.com/image.png" />" 
extractor = URLExtract() 
urls = extractor.find_urls(text) 
print(urls) # prints: ['www.example.com/image.png'] 
+0

感谢您的回答,但找到URL只是问题的第一部分。只需遍历整个HTML代码,找到找到的每个URL的索引并不是此问题第二部分的最佳解决方案。我们可能会在文本中多次重复一个网址。需要一个解决方案来找到并替换所有的img标签。 – cookiedough