在 Python 2 中是否有更简洁的方法来修改 URL 的某些部分?
例如
http://foo/bar -> http://foo/yah
目前我是这样做的:
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)
是否有更清洁的解决方案?
最佳答案
很遗憾,文档已过时; urlparse.urlparse()
(和 urlparse.urlsplit()
)产生的结果使用 collections.namedtuple()
-produced class作为基地。
不要将这个 namedtuple 变成一个列表,而是使用为这个任务提供的实用方法:
parts = urlparse.urlparse(url)
parts = parts._replace(path='yah')
url = parts.geturl()
namedtuple._replace()
method让您创建一个替换了特定元素的新副本。 ParseResult.geturl()
method然后将这些部分重新加入到一个 url 中。
演示:
>>> import urlparse
>>> url = 'http://foo/bar'
>>> parts = urlparse.urlparse(url)
>>> parts = parts._replace(path='yah')
>>> parts.geturl()
'http://foo/yah'
mgilson提交了 bug report (with patch)解决文档问题。
关于python - 在 Python 2 中修改 URL 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24200988/