使用python在元素之前插入html标记

使用python在元素之前插入html标记,python,html,beautifulsoup,Python,Html,Beautifulsoup,我有一个html文档,其结构如下: <ul> <li> <span class="date"> 2021. </span> </li> <li> <span class="date"> 2020. </span> <span class="links"> </s

我有一个html文档,其结构如下:

<ul>
<li>
    <span class="date">
        2021.
    </span>
</li>
<li>
    <span class="date">
        2020.
    </span>
<span class="links">
</span>
</li>
</ul>
<ul>
<h3 id="year_heading">2021</h3>
<li>
    <span class="date">
        2021.
    </span>
</li>
<h3 id="year_heading">2020</h3>
<li>
    <span class="date">
        2020.
    </span>
<span class="links">
</span>
</li>
</ul>
目标是使其看起来如下所示:

<ul>
<li>
    <span class="date">
        2021.
    </span>
</li>
<li>
    <span class="date">
        2020.
    </span>
<span class="links">
</span>
</li>
</ul>
<ul>
<h3 id="year_heading">2021</h3>
<li>
    <span class="date">
        2021.
    </span>
</li>
<h3 id="year_heading">2020</h3>
<li>
    <span class="date">
        2020.
    </span>
<span class="links">
</span>
</li>
</ul>
    2021
  • 2021
  • 2020
  • 2020
但目前的输出是

<ul>
<li><h3 id="year_heading">2021</h3>
    <span class="date">
        2021.
    </span>
</li>

<li><h3 id="year_heading">2020</h3>
    <span class="date">
        2020.
    </span>
<span class="links">
</span>
</li>
</ul>
  • 2021年 2021
  • 二零二零年 2020
这会将我的标题放置在li标记的顶部,导致条目的bulletpoint位于标题旁边,而不是条目本身旁边。这个问题有好的解决办法吗

编辑:添加所需输出

尝试:

从bs4导入美化组
html_doc=“”
  • 2021
  • 2020
” soup=BeautifulSoup(html\u doc,“html.parser”) 对于汤中的span,选择(“span.date”): txt=span.get_text(strip=True).strip(“.”) ul=span.查找父项(“ul”) 插入( ul.目录索引(查找父项(“li”), 美丽之群( {}\n.格式(txt),“html.parser” ), ) 印花(汤)
印刷品:

    2021
  • 2021
  • 2020
  • 2020

我认为最好是显示所需的输出HTML,而不是只描述所需内容。