如果有更简单的方法从url中删除特定的参数,我很好奇.我想出了如下这似乎有点冗长.使用的库或更多的
pythonic版本赞赏.
parsed = urlparse(url) if parsed.query != "": params = dict([s.split("=") for s in parsed.query.split("&")]) if params.get("page"): del params["page"] url = urlunparse((parsed.scheme,None,parsed.path,urlencode(params.items()),parsed.fragment,)) parsed = urlparse(url)
解决方法
我创建了一个小帮手类,以一种结构化的方式来表示一个url:
import cgi,urllib,urlparse class Url(object): def __init__(self,url): """Construct from a string.""" self.scheme,self.netloc,self.path,self.params,self.query,self.fragment = urlparse.urlparse(url) self.args = dict(cgi.parse_qsl(self.query)) def __str__(self): """Turn back into a URL.""" self.query = urllib.urlencode(self.args) return urlparse.urlunparse((self.scheme,self.fragment))
那你可以做:
u = Url(url) del u.args['page'] url = str(u)
更多关于这个:Web development peeve.