如何在python中消除html文件的特定部分

时间:2013-07-27 19:29:20

标签: python html

我正在处理一个包含第1项,第2项和第3项的html文件。我想删除最后一项之后的所有文本2.文件中可能有多个第2项。我正在使用它,但它不起作用:

text = """<A href="#106">Item&nbsp;2. <B>Item&nbsp;2. Properties</B> this is an example this is an example"""

>>> a=re.search ('(?<=<B>)Item&nbsp;2.',text)
>>> b= a.group(0)
>>> newText= text.partition(b)[0]
>>> newText
'<A href="#106">'

它删除第一个项目2之后的文本而不是第二个项目。

1 个答案:

答案 0 :(得分:1)

我使用BeautifulSoup来解析HTML并对其进行修改。您可能想要使用decompose()或extract()方法。

BeautifulSoup很不错,因为它非常适合解析格式错误的HTML。

对于您的具体示例:

>>> import bs4
>>> text = """<A href="#106">Item&nbsp;2. <B>Item&nbsp;2. Properties</B> this is an example this is an example"""
>>> soup = bs4.BeautifulSoup(text)
>>> soup.b.next_sibling.extract()
u' this is an example this is an example'
>>> soup
<html><body><a href="#106">Item 2. <b>Item 2. Properties</b></a></body></html>

如果您真的想使用正则表达式,那么非贪婪的正则表达式将适用于您的示例:

>>> import re
>>> text = """<A href="#106">Item&nbsp;2. <B>Item&nbsp;2. Properties</B> this is an example this is an example"""
>>> m = re.match(".*?Item&nbsp;2\.", text)
>>> m.group(0)
'<A href="#106">Item&nbsp;2.'