You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何在单词间插入连字符生成符合URL规范的路径

解决方案

核心处理逻辑是对subsection(也可同时对section做兼容处理)的字符串做空白规范化后替换为连字符,推荐使用split()+join()的组合方案,兼容性更强:

  • 先用strip()清除字符串首尾多余的空白字符
  • 再用split()按任意长度的空白分割字符串(自动处理多个连续空格、制表符等特殊空白场景)
  • 最后用'-'把分割后的单词列表拼接为连字符连接的字符串

你原有代码中存在两个可优化点:一是section和subsection被错误定义为了空列表,实际业务中应为爬取到的字符串类型值;二是base_url末尾已带斜杠,拼接时多加斜杠会导致URL出现双斜杠异常。修正后的完整代码如下:

# 示例值,实际使用时替换为你爬取到的对应内容
section = "sport"
subsection = "rugby league"
base_url = 'https://www.bbc.co.uk/'

# 处理多单词空格替换
processed_section = '-'.join(section.strip().split())
processed_subsection = '-'.join(subsection.strip().split())

final_url = f'{base_url}{processed_section}/{processed_subsection}'

该方案鲁棒性远高于直接使用replace(' ', '-'):即便爬取到的subsection出现首尾带空格、中间多连续空格的情况,比如值为' rugby league ',依然可以正确处理为'rugby-league'。

如果你的section和subsection是批量存储在列表中的,可遍历列表逐个处理后生成URL:

sections = ["sport", "news", "culture"]
subsections = ["rugby league", "top stories", "film and tv"]
base_url = 'https://www.bbc.co.uk/'

url_list = []
for sec, subsec in zip(sections, subsections):
    processed_sec = '-'.join(sec.strip().split())
    processed_subsec = '-'.join(subsec.strip().split())
    url_list.append(f'{base_url}{processed_sec}/{processed_subsec}')

内容的提问来源于stack exchange,提问作者Andy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 09:06:03