Gar*_*ell 8 python url python-2.x urlparse
有没有更简洁的方法来修改Python 2中URL的某些部分?
例如
http://foo/bar -> http://foo/yah
Run Code Online (Sandbox Code Playgroud)
目前,我这样做:
import urlparse
url = 'http://foo/bar'
# Modify path component of URL from 'bar' to 'yah'
# Use nasty convert-to-list hack due to urlparse.ParseResult being immutable
parts = list(urlparse.urlparse(url))
parts[2] = 'yah'
url = urlparse.urlunparse(parts)
Run Code Online (Sandbox Code Playgroud)
有更清洁的解决方案吗?
Mar*_*ers 22
不幸的是,文档已经过时了; urlparse.urlparse()
(和urlparse.urlsplit()
)产生的结果使用一个collections.namedtuple()
生产的类作为基础.
不要将此namedtuple转换为列表,而是使用为此任务提供的实用程序方法:
parts = urlparse.urlparse(url)
parts = parts._replace(path='yah')
url = parts.geturl()
Run Code Online (Sandbox Code Playgroud)
该namedtuple._replace()
方法允许您创建一个替换了特定元素的新副本.然后,该ParseResult.geturl()
方法将部件重新连接到您的URL中.
演示:
>>> import urlparse
>>> url = 'http://foo/bar'
>>> parts = urlparse.urlparse(url)
>>> parts = parts._replace(path='yah')
>>> parts.geturl()
'http://foo/yah'
Run Code Online (Sandbox Code Playgroud)