如果一行文本中有多个<i>标签,是否可以将文本仅包装在一个<i>标签中?

时间:2019-07-03 04:40:55

标签: python html beautifulsoup

我正在处理一个非常粗糙的html文件。

它看起来像:

<p><i><font size="2" style="font-size:10.0pt;font-style:italic;"> The
    Company’s future results</font></i><i><font size="2" style="font-size:10.0pt;font-style:italic;">
    and energy,</font></i><i><font style="font-style:italic;">including oil
    and natural gas</font></i><i><font style="font-style:italic;">are under risk</font></i>Some text in the p tag</p>

文本The Company's future results and energy, including oil and natural gas are under risk位于多个<i>标签中

有没有一种方法可以使我在此文本中只得到一个<i>。 (我不在乎字体标签)。我的html应该看起来像这样:

<p><i><font size="2" style="font-size:10.0pt;font-style:italic;"> The
    Company’s future results</font><font size="2" style="font-size:10.0pt;font-style:italic;">
    and energy,</font><font style="font-style:italic;">including oil
    and natural gas</font><font style="font-style:italic;">are under risk</font></i>Some text in the p tag</p>

1 个答案:

答案 0 :(得分:0)

您只需使用正则表达式即可。 喜欢:

import re
html= re.sub(r'</i><i>', '', html, flags=re.I)

当然,如果您确定i标记始终以小写形式编写,则可以执行以下操作:

html= html.replace('</i><i>', '')

两个版本都基于这样的假设,即开闭i-tag彼此相邻出现以便被替换(但我想那是您想要的,对吧?)。