2024-04-30 16:03:17 发布
网友
我可以得到以下任何格式的字符串:
网址:例如http://www.acme.com:456
字符串:例如www.acme.com:456、www.acme.com 456或www.acme.com
我想提取主机,如果存在端口。如果端口值不存在,我希望它默认为80。
我试过urlparse,它对url很好,但对另一种格式不行。例如,当我在hostname:port上使用urlparse时,它会将主机名放在方案中,而不是放在netloc中。
我很高兴有一个使用urlparse和regex的解决方案,或者一个可以同时处理这两种格式的regex。
我对urlparse不太熟悉,但使用regex,您可以执行以下操作:
p = '(?:http.*://)?(?P<host>[^:/ ]+).?(?P<port>[0-9]*).*' m = re.search(p,'http://www.abc.com:123/test') m.group('host') # 'www.abc.com' m.group('port') # '123'
或者,没有端口:
m = re.search(p,'http://www.abc.com/test') m.group('host') # 'www.abc.com' m.group('port') # '' i.e. you'll have to treat this as '80'
编辑:修复了regex,使其也与“www.abc.com 123”匹配
>>> from urlparse import urlparse >>> aaa = urlparse('http://www.acme.com:456') >>> aaa.hostname 'www.acme.com' >>> aaa.port 456 >>>
您可以使用urlparse从URL字符串获取主机名:
from urlparse import urlparse print urlparse("http://www.website.com/abc/xyz.html").hostname # prints www.website.com
我对urlparse不太熟悉,但使用regex,您可以执行以下操作:
或者,没有端口:
编辑:修复了regex,使其也与“www.abc.com 123”匹配
您可以使用urlparse从URL字符串获取主机名:
相关问题 更多 >
编程相关推荐