python - 从文件中删除重复的页面
问题描述
我正在解决这个问题。
我有一个 url 列表,我想为每个 php 页面保留第一个唯一的 url。
所以示例输入:
- http://www.example.com/index.php?id=1
- http://www.example.com/index.php?id=2
- http://www.example.com/page.php?id=2
- http://www.example.com/page.php?id=1
示例输出:
所以它必须清理一个文件,并且每个唯一页面只输出一个 url。
解决方案
您可以自己使用 regex/split() 或使用 url 解析器包解析 url,如urllib.parse
将path
(页面)存储在一个dict
(平均而言,它将为您提供快速查找O(n)
)并查看它是否已经存在,如果没有,则添加page
为键和url
值。
取 dict 值,它只会给你唯一的 url
from urllib.parse import urlparse
list_url = [
"http://www.example.com/index.php?id=1",
"http://www.example.com/index.php?id=2",
"http://www.example.com/page.php?id=1",
"http://www.example.com/page.php?id=2",
"blog.example.com/page.php?id=2",
"subdomain.example.com/folder/page.php?id=2"
]
mydict = {}
for url in list_url:
url_parsed =urlparse(url)
path = url_parsed.path
if path not in mydict:
mydict[path] = url
取字典值并转换为列表
print(list(mydict.values()))
当@waps 将其转换为类似但 list_comphension 结构时,如果您不关心第一个 id,您可以这样做。
list({ urlparse(url).path:url for url in list_url }.values())
输出
['http://www.example.com/index.php?id=2',
'http://www.example.com/page.php?id=2', 'blog.example.com/page.php?id=2', 'subdomain.example.com/folder/page.php?id =2']
推荐阅读
- python - 在 Python 中使用 Sqlite3 模块更新表
- coq - Coq内核的证明技术
- google-apps-script - 谷歌表格新工作表模板
- javascript - 如何在 Angular js 中使用 Google Optimize 触发激活事件?
- c# - 基础连接已关闭。接收时发生意外错误
- sapui5 - 呈现为下拉列表的智能字段不显示说明
- sql-server - VSS 中的还原操作失败返回 VSS_E_OBJECT_NOT_FOUND
- amazon-web-services - 什么 AWS 服务限制管理 Lambda/SQS 事件源映射?
- json - 有没有办法区分空值和没有键?
- ios - 是否有来自 Firebase Cloud Messaging 的回调以指示已收到消息?