【问题标题】:URL parsing: Get N number of folders followed by filename starting from a certain folderURL解析:获取N个文件夹,后跟从某个文件夹开始的文件名
【发布时间】:2020-10-01 17:42:37
【问题描述】:

我有一个可以包含任意数量文件夹的 URL,它以 filename.extension 结尾。

示例:

https://cdn.example.com/user/image/upload/v87879798/images/profile/oaz4wkjkjsbzxa3xlkmu.jpg

我试图在 /v87879798 版本折叠后得到所有东西,因此:

images/profile/oaz4wkjkjsbzxa3xlkmu.jpg

我尝试了以下几种方法,但没有任何效果,因为我知道我很可能需要一个正则表达式,但我对它们的了解还不允许我构建这样的方法。我尝试的一些方法是:

import os
from urllib.parse import urlparse
# url https://cdn.example.com/user/image/upload/v87879798/images/profile/oaz4wkjkjsbzxa3xlkmu.jpg
parsed_url = urlparse(url)
# parsed_url.path /lang-code/image/upload/v1601568948/images/profile
path = os.path.dirname(parsed_url.path)
# file_name oaz4wkjkjsbzxa3xlkmu.jpg
file_name = os.path.basename()

但到目前为止没有任何效果。任何帮助将不胜感激。

编辑: 抱歉,忘了提及我所说的 N 个文件夹的意思是,以下任何一个 url 都是可能的:

https://cdn.example.com/user/image/upload/v87879798/images/profile/oaz4wkjkjsbzxa3xlkmu.jpg

https://cdn.example.com/user/image/upload/v87879798/images/oaz4wkjkjsbzxa3xlkmu.jpg

https://cdn.example.com/user/image/upload/v87879798/oaz4wkjkjsbzxa3xlkmu.jpg

【问题讨论】:

    标签: python regex urlparse


    【解决方案1】:

    使用正则表达式模式 --> r"v\d+\/(.+)$"。假设随机数以v开头

    例如:

    import re
    from urllib.parse import urlparse
    
    ptrn = re.compile(r"v\d+\/(.+)$")
    url = "https://cdn.example.com/user/image/upload/v87879798/images/profile/oaz4wkjkjsbzxa3xlkmu.jpg"
    parsed_url = urlparse(url)
    print(ptrn.search(parsed_url.path).group(1))
    

    输出:

    images/profile/oaz4wkjkjsbzxa3xlkmu.jpg
    

    演示:

    ptrn = re.compile(r"v\d+\/(.+)$")
    urls = ["https://cdn.example.com/user/image/upload/v87879798/images/profile/oaz4wkjkjsbzxa3xlkmu.jpg", "https://cdn.example.com/user/image/upload/v87879798/images/profile/oaz4wkjkjsbzxa3xlkmu.jpg",
           "https://cdn.example.com/user/image/upload/v87879798/images/oaz4wkjkjsbzxa3xlkmu.jpg", "https://cdn.example.com/user/image/upload/v87879798/oaz4wkjkjsbzxa3xlkmu.jpg"]
    
    for url in urls:
        parsed_url = urlparse(url)
        print(ptrn.search(parsed_url.path).group(1))
    

    输出:

    images/profile/oaz4wkjkjsbzxa3xlkmu.jpg
    images/profile/oaz4wkjkjsbzxa3xlkmu.jpg
    images/oaz4wkjkjsbzxa3xlkmu.jpg
    oaz4wkjkjsbzxa3xlkmu.jpg
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-04
      • 2016-11-11
      • 2017-12-13
      • 2020-02-26
      • 1970-01-01
      • 2018-01-30
      • 1970-01-01
      相关资源
      最近更新 更多