Python URL拼接:处理含冒号路径的方法
·
问题出在 urljoin 函数会将包含冒号(:)的路径部分解释为 URL 协议(scheme),所以当你的路径中包含冒号时(如 nomic-embed-text:v1.5),它会被错误解析。
解决方案是确保路径部分被正确编码,或者使用其他方法拼接URL。以下是几种解决方案:
方案1:使用 urllib.parse.urljoin 并编码路径
from urllib.parse import urljoin, quote
base_url = 'http://10.90.0.93:11434'
path = 'nomic-embed-text:v1.5'
# 编码路径中的特殊字符
encoded_path = quote(path, safe='')
result = urljoin(base_url + '/', encoded_path)
print(result)
方案2:直接拼接(更简单)
base_url = 'http://10.90.0.93:11434'
path = 'nomic-embed-text:v1.5'
result = f"{base_url.rstrip('/')}/{path}"
print(result)
方案3:使用 pathlib(Python 3.4+)
from pathlib import PurePosixPath
base_url = 'http://10.90.0.93:11434'
path = 'nomic-embed-text:v1.5'
result = str(PurePosixPath(base_url) / path)
print(result)
推荐使用方案2,因为它最简单直接,而且能正确处理你的用例。方案1更通用但稍复杂,方案3更面向对象但可能不够直观。
最终正确结果应该是:
http://10.90.0.93:11434/nomic-embed-text:v1.5
更多推荐


所有评论(0)