我有超过 1,000 个遵循此形式的列表项的列表:
<li class="sortable-itemW5">Aken I. Pard F0068UY</li>
我需要按姓氏按字母顺序排列这些项目。不幸的是,该列表是 FirstName LastName 格式,并且被 html 标签包围。有没有办法按姓氏组织这个项目列表,生成一个新列表,而不修改项目本身?
我尝试使用
sort
但在文档中找不到任何允许这样做的内容。
不幸的是,“猜测”哪些单词是姓氏的一部分,哪些单词不是,有点困难。例如:
"Aken I. Pard" -> "Pard"
"Robert Downey Jr" -> "Downey"
"Edgar Allan Poe" -> "Poe"
"Diderik van der Waals" -> "van der Waals"
您可以尝试使用专门解决此问题的库,例如https://nameparser.readthedocs.io/en/latest/index.html
有没有办法按姓氏组织这个项目列表,生成一个新列表,而不修改项目本身?
我尝试使用排序,但在文档中找不到任何允许这样做的内容。
和list.sort
的文档应该告诉您关于sorted
可选参数,用于根据标准对列表进行排序。例如:key
from nameparser import HumanName
l = ["Aken I. Pard", "Robert Downey Jr", "Edgar Allan Poe", "Diderik van der Waals"]
l.sort(key=lambda x: HumanName(x).last)
print(l)
在上面的
lambda
中,您还可以包含一个 html 解析器来删除 <li></li>
标签并仅保留名称字符串,然后再将该名称字符串传递给 nameparser.HumanName。