为了账号安全,请及时绑定邮箱和手机立即绑定

URL解析:获取从某个文件夹开始的N个文件夹,后跟文件名

URL解析:获取从某个文件夹开始的N个文件夹,后跟文件名

繁星点点滴滴 2023-09-26 14:57:05
我有一个可以包含任意数量文件夹的 URL,它以 filename.extension 结尾。例子:https://cdn.example.com/user/image/upload/v87879798/images/profile/oaz4wkjkjsbzxa3xlkmu.jpg我试图在 /v87879798 版本折叠后获取所有内容,因此:images/profile/oaz4wkjkjsbzxa3xlkmu.jpg我尝试了如下多种方法,但没有任何效果,因为我知道我很可能需要一个正则表达式,但我对它们的了解还不允许我构建这样的表达式。我尝试过的一些方法是:import osfrom urllib.parse import urlparse# url https://cdn.example.com/user/image/upload/v87879798/images/profile/oaz4wkjkjsbzxa3xlkmu.jpgparsed_url = urlparse(url)# parsed_url.path /lang-code/image/upload/v1601568948/images/profilepath = os.path.dirname(parsed_url.path)# file_name oaz4wkjkjsbzxa3xlkmu.jpgfile_name = os.path.basename()但到目前为止还没有任何效果。任何帮助将不胜感激。
查看完整描述

1 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

使用正则表达式模式 --> 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


查看完整回答
反对 回复 2023-09-26
  • 1 回答
  • 0 关注
  • 41 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信