【问题标题】:To remove tags containing particular subtag in xml parsing with BeautifulSoup使用 BeautifulSoup 在 xml 解析中删除包含特定子标签的标签
【发布时间】:2018-05-01 09:34:01
【问题描述】:

我正在尝试在 Python 中使用 BeautifulSoup 解析 XML 文件。 XML文件如:

<x id = '123'>
<b><c>abcd</c>
</b>
</x>
<x id ='456'><z></z>
</x>
<x id ='567'><c>def</c>
</x>

如果任何外部标签&lt;x&gt;包含子标签&lt;c&gt;,我想删除整个标签。我应该如何在 Python 中做到这一点?

【问题讨论】:

  • 您要删除两个标签,还是只删除包含def 的标签?

标签: python xml beautifulsoup


【解决方案1】:

首先,使用find_all('x') 查找所有x 标签。然后如果标签包含&lt;c&gt;标签(可以使用if x.find('c'):检查)使用decompose()删除标签。

xml = '''
<x id = '123'>
    <b><c>abcd</c></b>
</x>
<x id ='456'>
    <z></z>
</x>
<x id ='567'>
    <c>def</c>
</x>'''
soup = BeautifulSoup(xml, 'html.parser')
for x in soup.find_all('x'):
    if x.find('c'):
        x.decompose()
print(soup)

输出:

<x id="456">
<z></z>
</x>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-04
    • 2021-10-12
    • 2014-12-02
    • 2019-05-11
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 2013-03-20
    相关资源
    最近更新 更多