如何在BeautifulSoup中将多个标签包裹在一个新标签下?

0 投票
1 回答
744 浏览
提问于 2025-04-28 09:05

我有一个输入的XML结构,如下所示:

<sometag> <a></a> <b></b> <c> <d></d> </c>  </sometag>

现在我需要把所有内容包裹在<sometag>...</sometag>之间,形成一个新的标签,这个新标签将作为的子标签。

我想要的结构是:

<sometag> <newtag> <a></a> <b></b> <c> <d></d> </c> </newtag> </sometag>

我该怎么做呢?

我知道可以使用wrap和unwrap这两个函数各用两次来实现这个效果。

soup = BeautifulSoup("<sometag> <a></a> <b></b> <c> <d></d> </c>  </sometag>",'xml')
soup.sometag.wrap(soup.new_tag('newtag'))
soup.sometag.unwrap()
soup.newtag.wrap(soup.new_tag('sometag'))
print soup

但是有没有其他更好的方法呢?

暂无标签

1 个回答

1

因为你只是在处理标签名称,所以一个选择是把 sometag 改名为 newtag,然后用新的 sometagnewtag 包裹起来:

soup.sometag.name = 'newtag'
soup.newtag.wrap(soup.new_tag('sometag'))

或者先包裹,再改名:

soup.sometag.wrap(soup.new_tag('sometag')).sometag.name = 'newtag'

撰写回答