我在一个字符串中有一些HTML代码(用于在浏览器中显示),其中包含任意数量的svg图像,例如:
<table>
<tr>
<td><img src="http://localhost/images/Store.Tools.svg"></td>
<td><img src="http://localhost/images/Store.Diapers.svg"></td>
</tr>
</table>
我想查找所有HTML链接并将其替换为以下内容(以便将其作为电子邮件附加):
<table>
<tr>
<td><cid:image1></td><td><cid:image2></td>
</tr>
</table>
SVG文件名可以包含任意数量的点,字符和数字。
在python中执行此操作的最佳方法是什么?
答案 0 :(得分:3)
我会使用HTML Parser查找所有img
代码并替换它们。
使用BeautifulSoup
并使用replace_with()
的示例:
from bs4 import BeautifulSoup
data = """
<table><tr>
<td><img src="http://localhost/images/Store.Tools.svg"></td>
<td><img src="http://localhost/images/Store.Diapers.svg"></td>
</tr></table>
"""
soup = BeautifulSoup(data, 'html.parser')
for index, image in enumerate(soup.find_all('img'), start=1):
tag = soup.new_tag('img', src='cid:image{}'.format(index))
image.replace_with(tag)
print soup.prettify()
打印:
<table>
<tr>
<td>
<img src="cid:image1"/>
</td>
<td>
<img src="cid:image2"/>
</td>
</tr>
</table>