首页 > 解决方案 > 从文件中删除重复的页面

问题描述

我正在解决这个问题。

我有一个 url 列表,我想为每个 php 页面保留第一个唯一的 url。

所以示例输入:

示例输出:

所以它必须清理一个文件,并且每个唯一页面只输出一个 url。

标签: pythonpython-3.x

解决方案


您可以自己使用 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']


推荐阅读