首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将URL拆分为三个不同的变量

如何将URL拆分为三个不同的变量
EN

Stack Overflow用户
提问于 2019-07-17 02:26:29
回答 3查看 463关注 0票数 3

我想把一个URL分割成三个字符串。示例:

代码语言:javascript
复制
https://www.google.com:443
http://amazon.com:467

我希望产出如下:

代码语言:javascript
复制
string 1: https or http
string 2: www.google.com or amazon.com
string 3: 443 or 467

上述输出基于所提供的示例。基本上,我希望将字符串拆分为protocoldomainport,并分配给三个不同的变量。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-07-17 03:02:50

ULR比人们想象的要复杂得多,这就是为什么通常使用经过验证的代码来解析它们并处理意外的边缘情况是一个好主意。Python的库中有urllib.parse,您应该使用它,而不是试图解析它。

您想要的部分在从scheme返回的对象的hostnameport属性中。

例如:

代码语言:javascript
复制
from urllib.parse import urlparse

def getParts(url_string):
    p = urlparse(url_string)
    return [p.scheme, p.hostname, p.port]

getParts('https://www.google.com:443')
# ['https', 'www.google.com', 443]

getParts('http://amazon.com:467')
# ['http', 'amazon.com', 467]

# surprising, but valid url:
getParts('https://en.wikipedia.org:443/wiki/Template:Welcome')
# ['https', 'en.wikipedia.org', 443]

# missing parts:
getParts('//www.google.com/example/home')
# ['', 'www.google.com', None]
票数 7
EN

Stack Overflow用户

发布于 2019-07-17 02:32:45

给你:

代码语言:javascript
复制
url = 'https://www.google.com:443'

first = url.find(':')
last = url.rfind(':')

protocol = url[:first]
domain = url[first+3:last]
port = url[last+1:]
票数 1
EN

Stack Overflow用户

发布于 2019-07-17 03:15:13

一种“原始”方法:

代码语言:javascript
复制
from collections import namedtuple

def split_url(url):
    split_1 = url.split('://')
    split_2 = split_1[1].split(':')
    protocol = split_1[0]
    domain = split_2[0]
    port = split_2[1]

    url_split = namedtuple('url_split', ['protocol', 'domain', 'port'])
    return url_split(protocol, domain, port)

因此,例如:

代码语言:javascript
复制
s = 'https://www.google.com:443'
result = split_url(s)

然后我们有:

代码语言:javascript
复制
result.protocol
>> 'https'

result.domain
>> 'www.google.com'

result.port
>> '443'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57067736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档