您可以使用
urllib.parse.urlparse函数和
ParseResult._replace方法(Python
3):
>>> import urllib.parse>>> parsed = urllib.parse.urlparse("https://www.google.dk:80/barbaz")>>> replaced = parsed._replace(netloc="www.foo.dk:80")>>> print(replaced)ParseResult(scheme='https', netloc='www.foo.dk:80', path='/barbaz', params='', query='', fragment='')如果您使用的是Python 2,请替换
urllib.parse为
urlparse。
ParseResult是的子类,
namedtuple并且
_replace是以下
namedtuple方法:
返回命名元组的新实例,用新值替换指定字段
更新 :
正如@ 2rs2ts在注释
netloc属性中所说的,包括端口号。
好消息:
ParseResult具有
hostname和
port属性。坏消息:
hostname和
port不的成员
namedtuple,他们的动态特性,你不能这样做
parsed._replace(hostname="www.foo.dk")。它将引发异常。
如果您不想拆分,
:并且您的网址始终有一个端口号,却没有,
username并且
password(例如“ https://
username:password@www.google.dk:80 /
barbaz之类的网址”),您可以这样做:
parsed._replace(netloc="{}:{}".format(parsed.hostname, parsed.port))


