python - 在 Python 中的 URL 列表中选择前 3 个仅限域的 URL
问题描述
我正在努力思考某个操作背后的逻辑。
例如,我有一个 URL 列表:
["https://example1.com",
"example2.com",
"http://example3.com/subpage",
"http://example4.com/",
"http://example5.com/subpage"]
我需要提取前 3 个结果,但前提是结果只是一个域。如果它有一个子页面,我想忽略它。
知道怎么做吗?我想第一件事是浏览列表并删除任何子页面,然后选择前 3 个。
但是,确定 URL 是仅域还是子页面的最佳方法是什么?
任何帮助是极大的赞赏!
解决方案
您可以过滤列表,然后使用列表切片:
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 后面的三个字母"."
$
: 在字符串的末尾锚定表达式。
推荐阅读
- tsql - TSQL - 计算日期
- vue.js - 当输入字段的数量不恒定时,Vue.js如何从输入字段中收集值
- javascript - Javascript POST 到 PHP 在本地工作,在外部失败
- android - 先前的活动在未完成退出转换的情况下完成
- selenium - 无法在 Windows 上使用 WebdriverIO 启动 Selenium 服务器
- vb.net - 搜索包含字符串访问数据库的字符串
- sql - 当前行和下一行之间的 DateDiff >= 10 天
- php - 如何在一段时间(24 小时)内阻止 IP 地址
- java - 重复号码检查并不总是有效
- c - c中同一结构的多个名称