【问题标题】:Python: Remove HTML Tags & text inbetween HTML TagsPython:删除 HTML 标签和 HTML 标签之间的文本
【发布时间】:2017-05-02 11:22:44
【问题描述】:

我正在尝试删除 HTML 标签(Python 3),但也尝试删除它们之间的文本。我下面的代码 sn-p 似乎没有给我我正在寻找的结果,我在 SO 上发现的所有其他问题似乎只着眼于删除 HTML 标签,但保留 HTML 标签内的文本不是我想要做的。

当前代码

import re
...
price="12.00 <b>17.50</b>"
price=re.sub('<[^>]*>', '', price)

字符串

12.00 <b>17.50</b>

预期结果

12.00

目前的成果

12.00 17.50

【问题讨论】:

    标签: python regex python-3.x


    【解决方案1】:

    您也可以使用 HTML 解析器,例如 BeautifulSoup。想法是找到所有标签并分解它们,然后得到剩下的:

    In [8]: from bs4 import BeautifulSoup
    
    In [9]: price = "12.00 <b>17.50</b>"
    
    In [10]: soup = BeautifulSoup(price, "html.parser")
    
    In [11]: for elm in soup.find_all():
        ...:     elm.decompose()
        ...:     
    
    In [12]: print(soup)
    12.00 
    

    还有,这里有一个著名的话题,解释了为什么不应该使用正则表达式处理 HTML:

    【讨论】:

      【解决方案2】:

      一个可能的解决方案是逐个标记,例如,清理&lt;b&gt;&lt;/b&gt;内部的所有内容:

      price=re.sub("<[b][^>]*>(.+?)</[b]>", '', price)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-08
        • 2012-01-17
        • 1970-01-01
        • 1970-01-01
        • 2016-07-05
        • 2012-09-24
        相关资源
        最近更新 更多