如何在python中用增量计数替换多个字符串

时间:2014-11-13 16:43:23

标签: python html html-parsing

我在一个字符串中有一些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中执行此操作的最佳方法是什么?

1 个答案:

答案 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>