【发布时间】:2015-05-11 00:36:10
【问题描述】:
我是 Python 编码和 BeautifulSoup4 的新手。我有一个需要排序的 HTML 列表,它遵循以下模式:
<div id="mgioLangSelector">
<ul id="mgioLangList">
<li><a href="" class="mgio-autonym"><span class="mgioAutonymNative" lang="am">አማርኛ</span><span class="mgioAutonymSeperator"> / </span><span class="mgioAutonymEnglish">Amharic</span</a></li>
<li><a href="" class="mgio-autonym"><span class="mgioAutonymNative" lang="hr">hrvatski</span><span class="mgioAutonymSeperator"> / </span> <span class="mgioAutonymEnglish">Croatian</span</a></li>
<li><a href="" class="mgio-autonym"><span class="mgioAutonymNative" lang="cs">čeština</span><span class="mgioAutonymSeperator"> / </span><span class="mgioAutonymEnglish">Czech</span</a></li>
<li><a href="" class="mgio-autonym"><span class="mgioAutonymNative" lang="vi">tiếng Việt</span><span class="mgioAutonymSeperator"> / </span><span class="mgioAutonymEnglish">Vietnamese</span</a></li>
<li><a href="" class="mgio-autonym"><span class="mgioAutonymNative" lang="sq">shqip</span><span class="mgioAutonymSeperator"> / </span><span class="mgioAutonymEnglish">Albanian</span</a></li>
</ul>
</div>
我需要对列表原位进行排序并保存生成的 HTML。列表需要按第三个span的内容排序,class= mgioAutonymEnglish
我怀疑我需要将sorted() 与适当的按键功能一起使用,但我会出现空白。
我已经尝试了以下代码:
from bs4 import BeautifulSoup
from lxml import etree
soup = BeautifulSoup(open("interimResults.html"), 'lxml', from_encoding="utf-8")
matches = soup.find_all("span", attrs={"class": "mgioAutonymEnglish"})
sorted(matches, key=lambda elem: elem.text)
这将对 span 的内容进行排序,但不会对原始列表中的列表进行排序。我假设我需要更改 lambda 函数,但我目前不知所措。
我需要做什么或更改才能成功对列表进行排序,然后将这些更改保存在 HTML 文档中?
【问题讨论】:
标签: python sorting python-3.x beautifulsoup html-lists