Python从列表中删除类似的URL

Python从列表中删除类似的URL,python,list,Python,List,因此,我对python相当陌生。但我希望你能帮助我解决这个小问题,我已经从列表中删除了类似的重复项 所以我有一个URL列表:myList=['http://www.mywebsite.com/shoes', 'http://wwww.yourwebsite.com/', 'http://www.mywebsite.com/shoes/'] 我想删除类似的url的,因为你可以看到,是几乎相同的。我想移除其中一个(我不在乎是哪一个),但保留另一个。本质上是从列表中删除副本。我想举个例子。但我甚至不知

因此,我对python相当陌生。但我希望你能帮助我解决这个小问题,我已经从列表中删除了类似的重复项

所以我有一个URL列表:
myList=['http://www.mywebsite.com/shoes', 'http://wwww.yourwebsite.com/', 'http://www.mywebsite.com/shoes/']

我想删除类似的url的,因为你可以看到,是几乎相同的。我想移除其中一个(我不在乎是哪一个),但保留另一个。本质上是从列表中删除副本。我想举个例子。但我甚至不知道从哪里开始


任何洞察都会很有帮助。

如果相似性在“\”中是不同的,那么您可以使用集合从列表中删除重复项,因为:

集合对象是不同的散列对象的无序集合。 常见的用途包括成员资格测试、从数据库中删除重复项 序列,并计算数学运算,如交集, 并、差和对称差


如果您的相似性在“\”中不同,您可以使用集合从列表中删除重复项,因为:

集合对象是不同的散列对象的无序集合。 常见的用途包括成员资格测试、从数据库中删除重复项 序列,并计算数学运算,如交集, 并、差和对称差

你可以做:

  • 首先,删除最后一条斜线
  • 列表项
  • 删除重复项:

    set(map(lambda url: url.rstrip('/'), myList))
    
    你可以做:

  • 首先,删除最后一条斜线
  • 列表项
  • 删除重复项:

    set(map(lambda url: url.rstrip('/'), myList))
    

    问题可能是你还没有弄清楚两个URL相似到底意味着什么。我们不能帮你,因为只有你知道你的要求是什么。不过,一旦你弄明白了这一点,剩下的就足够简单了。有两种方法可以做到这一点:

    • 如果您的相似关系是可传递的-即,如果
      相似(a,b)和相似(b,c)
      意味着
      相似(a,c)
      适用于所有URL
      a
      b
      c
      ,则可以将每个URL转换为规范形式。当且仅当两个URL的规范形式相等时,它们才会相似。因此,在这种情况下,最简单的方法是将每个URL转换为规范形式,然后创建一组通过以下方式获得的规范URL:

      set(canonical(u) for u in myList)
      
    • 如果你的相似关系是不可传递的,那么事情就会变得非常棘手,因为你可能会遇到类似A和B的情况,比如A和B和C相似,但A和C不相似。因此,在这个例子中,问题变成了,你希望在列表中去掉重复项的情况下包括什么?包括A和C,因为它们彼此不相似,还是只包含B,因为你会考虑A和C相似的副本?在这种情况下,根据您希望如何处理像这样的“模糊”情况,您可以使用各种算法——但同样,我们需要知道您的确切要求,才能推荐任何东西


      • 问题可能在于,您还没有弄清楚两个URL相似到底意味着什么。我们不能帮你,因为只有你知道你的要求是什么。不过,一旦你弄明白了这一点,剩下的就足够简单了。有两种方法可以做到这一点:

        • 如果您的相似关系是可传递的-即,如果
          相似(a,b)和相似(b,c)
          意味着
          相似(a,c)
          适用于所有URL
          a
          b
          c
          ,则可以将每个URL转换为规范形式。当且仅当两个URL的规范形式相等时,它们才会相似。因此,在这种情况下,最简单的方法是将每个URL转换为规范形式,然后创建一组通过以下方式获得的规范URL:

          set(canonical(u) for u in myList)
          
        • 如果你的相似关系是不可传递的,那么事情就会变得非常棘手,因为你可能会遇到类似A和B的情况,比如A和B和C相似,但A和C不相似。因此,在这个例子中,问题变成了,你希望在列表中去掉重复项的情况下包括什么?包括A和C,因为它们彼此不相似,还是只包含B,因为你会考虑A和C相似的副本?在这种情况下,根据您希望如何处理像这样的“模糊”情况,您可以使用各种算法——但同样,我们需要知道您的确切要求,才能推荐任何东西


        你真的只想删除最后一个
        /
        ,还是没有考虑过像
        http://www.mywebsite.com/shoes
        http://mywebsite.com/shoes
        相似性可能是一个非常复杂的问题,请尽可能具体地对待你认为类似的东西。你实际上只想删除最后的<代码> /<代码>,或者你没有考虑过类似“代码”之类的网站吗?http://www.mywebsite.com/shoes和
        http://mywebsite.com/shoes
        相似性可能是一个非常复杂的问题,请尽可能具体地对待你认为类似的东西。谢谢教程。你也帮了我,谢谢你的指导。你也帮了我我用了这个。非常感谢。我最后用了这个。非常感谢。