如何删除URL中间的w_xxx分辨率片段 有无比正则替换更优的方案
解决方案
1. 优化正则替换方案
你原本的正则只能匹配3位数字的宽度参数,遇到w_1200/、w_48/这类非3位的宽度配置就会失效,调整匹配规则即可覆盖所有情况:
import re new_url = re.sub(r"w_\d+/", "", url)
如果担心URL其他位置碰巧出现同格式字符串导致误删,可以加上位置限定,只匹配参数段里的宽度配置:
# 仅删除f_auto,q_auto/后面紧跟的w_xxx/片段 new_url = re.sub(r"(?<=f_auto,q_auto/)w_\d+/", "", url)
2. 非正则路径拆分方案(稳定性更高)
如果这类URL的结构固定,所有格式参数都放在路径段中,直接拆分路径过滤w_开头的片段更稳妥,完全没有误匹配风险:
# 按斜杠拆分URL为路径片段 path_segments = url.split("/") # 过滤掉所有w_开头的片段 filtered_segments = [seg for seg in path_segments if not seg.startswith("w_")] # 拼接回完整URL new_url = "/".join(filtered_segments)
该方案适合生产环境批量处理同结构URL的场景,就算后续宽度参数的位置发生变化、或者出现多位/少位数字的宽度值,都能正常生效。
内容的提问来源于stack exchange,提问作者rubi
相关产品推荐
相关产品推荐

