如何在BeautifulSoup中将多个标签包裹在一个新标签下?
我有一个输入的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
,然后用新的 sometag
把 newtag
包裹起来:
soup.sometag.name = 'newtag'
soup.newtag.wrap(soup.new_tag('sometag'))
或者先包裹,再改名:
soup.sometag.wrap(soup.new_tag('sometag')).sometag.name = 'newtag'