如何修复Python按字母表生成URL时字符串累加的问题
代码修复说明
问题原因
你的代码在每次循环时直接修改了作为模板的self.url属性,导致上一次拼接的字母会被保留,最终出现URL逐步拼接多个字母的错误。同时手写索引的while循环逻辑冗余,硬编码的长度判断index == 28灵活性差,后续修改字母表时需要同步调整该数值。
修复后代码
class GetNames(): def __init__(self): # 基础URL作为模板固定,不会被修改 self.base_url = "https://test.com/c=" self.new_url = [] self.letters = ['A','B','C','Ç','D','E','F','G','H','I','İ','J','K','L','M','N','O', 'Ö','P','R','S','T','Ş','U','Ü','V','Y','Z'] def get_letter(self): # 直接遍历字母表,无需手动维护索引 for letter in self.letters: # 每次基于模板生成独立的新URL current_url = self.base_url + letter self.new_url.append(current_url) print(self.new_url) # 测试运行 if __name__ == "__main__": handler = GetNames() handler.get_letter()
可选优化(URL标准化)
如果需要生成符合URL规范的地址,对Ç、Ö这类特殊字符做自动编码,可引入urllib的编码工具:
from urllib.parse import quote class GetNames(): def __init__(self): self.base_url = "https://test.com/c=" self.new_url = [] self.letters = ['A','B','C','Ç','D','E','F','G','H','I','İ','J','K','L','M','N','O', 'Ö','P','R','S','T','Ş','U','Ü','V','Y','Z'] def get_letter(self): for letter in self.letters: # 对字母做URL编码,保证地址合规 current_url = self.base_url + quote(letter) self.new_url.append(current_url) print(self.new_url) if __name__ == "__main__": handler = GetNames() handler.get_letter()
内容的提问来源于stack exchange,提问作者devilsgrin
相关产品推荐
相关产品推荐

