首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python漂亮汤以删除所有带有特定标记和文本的标记/内容

Python漂亮汤以删除所有带有特定标记和文本的标记/内容
EN

Stack Overflow用户
提问于 2017-07-07 15:05:00
回答 2查看 2.2K关注 0票数 1

我在python中使用了漂亮的汤,并且希望从包含在特定标记中的字符串中移除所有的东西,并且有一个带有特定文本的特定非关闭标记。在本例中,我希望删除在其中包含带有DOCA文本的类型标记的所有文档。

假设我有这样的东西:

代码语言:javascript
复制
<body>
    <document>
        <type>DOCA
            <sequence>1
            <filename>DOCA.htm
            <description>FORM DOCA
            <text>
                <title>Form DOCA</title>
                <h5 align="left"><a href="#toc">Table of Contents</a></h5>
    </document>
    <document>
        <type>DOCB
        <sequence>1
        <filename>DOCB.htm
        <description>FORM DOCB
        <text>
            <title>Form DOCB</title>
            <h5 align="left"><a href="#toc">Table of Contents</a></h5>
    </document>
<body>

我要做的是删除所有具有<type> of DOCA。我试过以下几种方法,但不起作用:

代码语言:javascript
复制
>>print(soup.find('document').find('type', text = re.compile('DOCA.*')))
None
EN

回答 2

Stack Overflow用户

发布于 2017-07-07 15:14:34

您可以查询所有文档,然后在每个文档中查询所有类型,检查其中是否存在DOCA,如果存在,则删除整个封闭文档。

代码语言:javascript
复制
from bs4 import BeautifulSoup

soup = BeautifulSoup(..., 'html.parser')

for doc in soup.find_all('document'):
    for type in doc.find_all('type'):
        if 'DOCA' in type.text:
            doc.extract()
            break

print(soup)

输出:

代码语言:javascript
复制
<body>

<document>
<type>DOCB
        <sequence>1
        <filename>DOCB.htm
        <description>FORM DOCB
        <text>
<title>Form DOCB</title>
<h5 align="left"><a href="#toc">Table of Contents</a></h5>
</text></description></filename></sequence></type></document>
</body>
票数 3
EN

Stack Overflow用户

发布于 2017-07-07 15:31:37

您可以在lambda方法中使用find来选择一个元素,例如:

代码语言:javascript
复制
soup.find('document').find(lambda tag : tag.name == 'type' and 'DOCA' in tag.text)  

然后可以使用extractdecompose删除该元素。

编辑:使用此表达式选择所有元素:

代码语言:javascript
复制
soup.find_all(lambda tag:tag.name == 'document' 
    and tag.find(lambda t:t.name == 'type' and 'DOCA' in t.text))
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44974073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档