Python列表推导式含IF/ELSE语法错误求助:实现URL拼接单行代码
解决Python列表推导式保留完整URL并拼接路径的问题
你需要对每个链接做分支处理而非过滤元素,因此要把三元条件表达式放在列表推导式的元素生成位置,而非末尾的过滤条件。正确的单行代码如下:
from urllib.parse import urlparse url = "mysite.com" links = ['www.google.com/api/1.js', '/path.js'] valid_links = [url + u if not urlparse(u).netloc else u for u in links]
说明
- 原代码将
if not urlparse(u).netloc放在列表推导式末尾,作用是过滤掉不满足条件的元素,因此只会保留拼接后的无域名路径,丢失了有域名的完整URL。 - 修改后的写法用三元表达式:对每个
u,如果urlparse(u).netloc为空(无域名)则拼接url + u,否则直接保留原链接u。这样会遍历所有元素,每个元素根据条件生成对应结果,最终得到['www.google.com/api/1.js', 'mysite.com/path.js'],符合需求。
内容的提问来源于stack exchange,提问作者Sunil Raj
相关产品推荐
相关产品推荐

