万一出现1个以上的子标签,如何在子标签后向右移动子标签? [英] How to move sub-tags to right after a mother tag in case there are more than 1 occurrence?
本文介绍了万一出现1个以上的子标签,如何在子标签后向右移动子标签?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试将每个<div class="c-s">
的所有子标签移到其母标签<div class="c-w">
之前.例如,
I'm trying to move all sub-tags of each <div class="c-s">
to right before the its mother tag <div class="c-w">
. For example,
from bs4 import BeautifulSoup
txt = '''
<div class="c-w">
<div class="c-s">
<div class="ex_example"> aa </div>
<div class="ex_example"> aa </div>
</div>
</div>
<div class="audio">link</div>
<div class="c-w">
<div class="c-s">
<div class="ex_example"> xx </div>
<div class="ex_example"> yy </div>
</div>
</div>
'''
soup = BeautifulSoup(txt, 'html.parser')
我的预期输出是以下BeautifulSoup对象
My expected output is the following BeautifulSoup object
<div class="ex_example"> aa </div>
<div class="ex_example"> aa </div>
<div class="ex_example"> cc </div>
<div class="c-w">
<div class="c-s"></div>
</div>
<div class="ex_example"> xx </div>
<div class="ex_example"> yy </div>
<div class="ex_example"> zz </div>
<div class="c-w">
<div class="c-s"></div>
</div>
这意味着<div class="ex_example"> cc </div>
的级别与<div class="c-w">
相同.
This means the level of such <div class="ex_example"> cc </div>
is the same as <div class="c-w">
.
非常感谢您的帮助!
推荐答案
此脚本会将带有class="ex_example"
的所有标签移到父<div class="c-w">
前面:
This script will move all tags with class="ex_example"
in front of parent <div class="c-w">
:
from bs4 import BeautifulSoup
txt = '''
<div class="c-w">
<div class="c-s">
<div class="ex_example"> aa </div>
<div class="ex_example"> aa </div>
<div class="ex_example"> cc </div>
</div>
</div>
<div class="audio">link</div>
<div class="c-w">
<div class="c-s">
<div class="ex_example"> xx </div>
<div class="ex_example"> yy </div>
<div class="ex_example"> zz </div>
</div>
</div>
'''
soup = BeautifulSoup(txt, 'html.parser')
for c_s in soup.select('div.c-s'):
for c in list(c_s.contents):
c.find_parent('div', class_='c-w').insert_before(c)
print(soup)
打印:
<div class="ex_example"> aa </div>
<div class="ex_example"> aa </div>
<div class="ex_example"> cc </div>
<div class="c-w">
<div class="c-s"></div>
</div>
<div class="audio">link</div>
<div class="ex_example"> xx </div>
<div class="ex_example"> yy </div>
<div class="ex_example"> zz </div>
<div class="c-w">
<div class="c-s"></div>
</div>
这篇关于万一出现1个以上的子标签,如何在子标签后向右移动子标签?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文