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
相关产品推荐
相关产品推荐

