📅  最后修改于: 2023-12-03 15:04:26.326000             🧑  作者: Mango
在处理 URL 列表时,我们可能需要将它们按照顶级域进行排序,以便更好地组织数据或进行分析。Python 提供了方便的库和函数,使我们能够轻松地实现这一目标。
导入需要的库
from urllib.parse import urlparse
from operator import itemgetter
我们需要导入 urlparse
函数以将 URL 解析为其各个组成部分,以及 itemgetter
函数以按照字典中的某个键排序。
创建 URL 列表
我们可以使用以下代码创建一个 URL 列表:
urls = ['https://www.google.com/',
'https://www.facebook.com/',
'https://github.com/',
'https://docs.python.org/3/library/urllib.parse.html',
'https://www.amazon.com/']
解析 URL 并获取顶级域名
我们可以使用以下代码将 URL 解析为其各个组成部分,并获取其顶级域名:
domains = [urlparse(url).netloc for url in urls]
top_level_domains = [domain.split('.')[-1] for domain in domains]
在上述代码中,我们使用 .netloc
属性从 URL 中获取主机名和端口,并使用 .split()
方法和索引访问顶级域名。
使用顶级域名对 URL 列表进行排序
我们可以使用以下代码对 URL 列表按顶级域名进行排序:
sorted_urls = [url for _, url in sorted(zip(top_level_domains, urls), key=itemgetter(0))]
在上述代码中,我们使用 zip()
函数将顶级域名和 URL 列表打包在一起,并使用 sorted()
函数按顶级域名进行排序。然后,我们使用 itemgetter(0)
将排序关键字设置为第一个元素即顶级域名,并使用列表推导式获取按顶级域名排序后的 URL 列表。
完整代码
from urllib.parse import urlparse
from operator import itemgetter
urls = ['https://www.google.com/',
'https://www.facebook.com/',
'https://github.com/',
'https://docs.python.org/3/library/urllib.parse.html',
'https://www.amazon.com/']
domains = [urlparse(url).netloc for url in urls]
top_level_domains = [domain.split('.')[-1] for domain in domains]
sorted_urls = [url for _, url in sorted(zip(top_level_domains, urls), key=itemgetter(0))]
print(sorted_urls)
输出结果
['https://www.google.com/', 'https://github.com/', 'https://docs.python.org/3/library/urllib.parse.html', 'https://www.facebook.com/', 'https://www.amazon.com/']
由此,我们成功地将 URL 列表按顶级域名进行了排序。
在本文中,我们学习了如何使用 Python 对顶级域名进行排序以对 URL 列表进行排序。借助 Python 提供的库和函数,这一操作变得非常简单。希望这篇文章能够帮助你更好地组织和分析 URL 列表!