首页 > 解决方案 > 在 Python 中的 URL 列表中选择前 3 个仅限域的 URL

问题描述

我正在努力思考某个操作背后的逻辑。

例如,我有一个 URL 列表:

["https://example1.com", 
"example2.com",
"http://example3.com/subpage",
"http://example4.com/",
"http://example5.com/subpage"]

我需要提取前 3 个结果,但前提是结果只是一个域。如果它有一个子页面,我想忽略它。

知道怎么做吗?我想第一件事是浏览列表并删除任何子页面,然后选择前 3 个。

但是,确定 URL 是仅域还是子页面的最佳方法是什么?

任何帮助是极大的赞赏!

标签: pythonregex

解决方案


您可以过滤列表,然后使用列表切片:

import re
d = ['https://example1.com', 'example2.com', 'http://example3.com/subpage', 'http://example4.com/', 'http://example5.com/subpage']
new_d = [i for i in d if re.findall('\.[a-z]{3}$|\.[a-z]{3}/$', i)][:3]

输出:

['https://example1.com', 'example2.com', 'http://example4.com/']

编辑:正则表达式解释:

\.: 匹配出现"."

[a-z]{3}: 匹配 a 后面的三个字母"."

$: 在字符串的末尾锚定表达式。


推荐阅读