使用内部文本按字母顺序排列列表项

问题描述 投票:0回答:1

我有超过 1,000 个遵循此形式的列表项的列表:

<li class="sortable-itemW5">Aken I. Pard F0068UY</li>

我需要按姓氏按字母顺序排列这些项目。不幸的是,该列表是 FirstName LastName 格式,并且被 html 标签包围。有没有办法按姓氏组织这个项目列表,生成一个新列表,而不修改项目本身?

我尝试使用

sort
但在文档中找不到任何允许这样做的内容。

sorting
1个回答
0
投票

不幸的是,“猜测”哪些单词是姓氏的一部分,哪些单词不是,有点困难。例如:

"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。

© www.soinside.com 2019 - 2024. All rights reserved.