【问题标题】:Strip URL in Python在 Python 中去除 URL
【发布时间】:2016-01-03 03:41:37
【问题描述】:

我对 python 很陌生。我正在尝试解析 URL 文件以仅保留 URL 的特定部分(粗体部分)。

以下是我正在使用的一些 URL 示例:

http://www.mega.pk/**washingmachine**-dawlance/
http://www.mega.pk/**washingmachine**-haier/
http://www.mega.pk/**airconditioners**-acson/
http://www.mega.pk/**airconditioners**-lg/
http://www.mega.pk/**airconditioners**-samsung/

我尝试了一些正则表达式,但它变得非常复杂。我想到的是从所有网址中删除此“http://www.mega.pk/”,因为它很常见,然后删除“-”之后的任何内容,包括所有斜杠。但是不知道怎么做。

【问题讨论】:

    标签: python regex url strip


    【解决方案1】:

    使用re.sub

    re.sub(r'^.*\/([^/]*)-.*', r'\1', line)
    

    DEMO

    例子:

    >>> s = '''http://www.mega.pk/washingmachine-dawlance/
        http://www.mega.pk/washingmachine-haier/'''.splitlines()
    >>> for line in s:
        print(re.sub(r'^.*\/([^/]*)-.*', r'\1', line))
    
    
    washingmachine
    washingmachine
    >>> 
    

    【讨论】:

      【解决方案2】:

      您可以在不使用正则表达式的情况下达到同样的效果。 Avinash 提出的解决方案更简洁,但下面的方法可能更容易理解,特别是如果您想在某个时候对其进行修改:

      s = '''http://www.mega.pk/washingmachine-dawlance/
      http://www.mega.pk/washingmachine-haier/'''.splitlines()
      for line in s:    
         cleanedUrl = line.replace('http://www.mega.pk/**','').replace('/','')
         urlParameters = cleanedUrl.split('-')
         print urlParameters[-1]
      

      或者,如果您愿意,可以使用更紧凑的版本:

      s = '''http://www.mega.pk/washingmachine-dawlance/
      http://www.mega.pk/washingmachine-haier/'''.splitlines()
      for line in s:    
          print line.replace('http://www.mega.pk/**','').replace('/','').split('-')[-1]
      

      【讨论】:

        【解决方案3】:

        将 re.sub 与 lambda 函数结合使用:

        re.sub(r'^http://www.mega.pk/(\w+)-.*', lambda x: x.group(), line)
        

        【讨论】:

          【解决方案4】:

          使用urllib(以前的urlparse)模块。它是专门为此目的而构建的。

          from urllib.parse import urlparse
          
          url = "http://www.mega.pk/washingmachine-dawlance/"
          
          path = urlparse(url).path  # get the path from the URL ("/washingmachine-dawlnace/")
          path = path[:path.index("-")]  # remove everything after the '-' including itself
          path = path[1:]  # remove the '/' at the starting of the path (just before 'washing')
          

          path 变量的值为washingmachine

          干杯!

          【讨论】:

            【解决方案5】:

            您还可以使用以下正则表达式:

            >>> import re
            >>> regex = r"(?is)^\s*https?\:\/\/[^\/]+\/(.*?)(?:\-|\/).*"
            >>> res = re.sub(regex, r"\1", PROVIDE_URL)
            

            你会得到想要的结果。

            【讨论】:

              【解决方案6】:

              您也可以使用 urljoin 执行此操作:

              import urllib.parse
              
              
              url = "http://www.mega.pk/**washingmachine**-dawlance/"
              
              website = urllib.parse.urljoin(url, '/')
              
              print(website)
              

              【讨论】:

                猜你喜欢
                • 2019-10-26
                • 2015-12-14
                • 2022-01-21
                • 2013-07-13
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2014-12-22
                相关资源
                最近更新 更多