按链接名称对链接列表进行排序

Joh*_*ohn 2 python sorting list python-3.x

我有链接列表

links = [
  '<a href="http://127.0.0.1:5000/project/24/portfolio/">Packaging Only Demo</a>',
  '<a href="http://127.0.0.1:5000/project/38/portfolio/">QA Source</a>',
  '<a href="http://127.0.0.1:5000/project/44/portfolio/">Complete Demo</a>'
]
Run Code Online (Sandbox Code Playgroud)

我需要按链接的名称对列表进行排序.

我尝试用正则表达式对它进行排序,但是它持续时间太长了.该列表由众多参考文献组成

import re
def sorted(x):
  return re.search(r'\>(.*)<', x).group(1)

links = sorted(links, key=sorted)
print(links)
Run Code Online (Sandbox Code Playgroud)

Wil*_*sem 7

可以使用etree解析XML/HTML片段并获取<a>标记之间的文本.然后您可以将其用作排序标准:

from lxml import etree

result = sorted(links,key=lambda x : etree.XML(x).text)
Run Code Online (Sandbox Code Playgroud)

所以这里我们调用etree.XML(..)函数来构造一个element(<a>标签),然后.text我们获取标签之间的文本.然后我们可以使用它作为key排序.

这导致:

>>> result
['<a href="http://127.0.0.1:5000/project/44/portfolio/">Complete Demo</a>', '<a href="http://127.0.0.1:5000/project/24/portfolio/">Packaging Only Demo</a>', '<a href="http://127.0.0.1:5000/project/38/portfolio/">QA Source</a>']
Run Code Online (Sandbox Code Playgroud)