我有一个输入xml结构,如图所示
<sometag> <a></a> <b></b> <c> <d></d> </c> </sometag>
现在我需要将<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
但还有其他更好的方法吗?
答案 0 :(得分:1)
由于您只处理代码名称,因此选项可以将sometag
重命名为newtag
,然后将newtag
换成新的sometag
:
soup.sometag.name = 'newtag'
soup.newtag.wrap(soup.new_tag('sometag'))
首先换行并重新命名:
soup.sometag.wrap(soup.new_tag('sometag')).sometag.name = 'newtag'