Python - 删除过多的html标签

时间:2015-06-25 13:32:46

标签: python html

所以我现在有这样的文字:

<i>This article is written </i><a href="http://google.com"><i>TEST</i></a><i>.</i>

我认为这是一个很好的HTML,但是,我想清理它,删除所有过多的<i>标记并将其简化为单个<i>标记:

<i>This article is written <a href="http://google.com">TEST</a>.</i>

我试图自己清理它,但我需要提前查看文本,并且没有取得多大成功。有没有我可以使用的包装或我可以做的方式,或者我必须手动操作?

谢谢

1 个答案:

答案 0 :(得分:0)

使用HTML解析器绝对是最可靠的解决方案。它能够处理分割成许多行的标签。

以下将解决您的示例,但可能不会更多......

def OuterI(text):
    outer = re.search("(.*?)(\<i\>.*<\/i\>)(.*)", text)

    if outer:
        return "%s<i>%s</i>%s" % (outer.group(1), re.sub(r"(\<\/?[iI]\>)", "", outer.group(2)), outer.group(3))
    else:
        return text

print OuterI('<i>This article is written </i><a href="http://google.com"><i>TEST</i></a><i>.</i>')
print OuterI('text before <i>This article is written </i><a href="http://google.com"><i>TEST</i></a><i>.</i> text after')