为什么拆分未能按预期进行?

2024-04-25 01:12:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望这是一个快速的。你知道吗

我正在尝试从给定的URL获取二级域

这是我的密码:

    url = url.split(".", 1)[1]
    url = url.split('//', 1)[-1]
    url = url.split("/", 0)[0]

问题是最后一行,因为某种原因,它似乎什么都没做。你知道吗

如果我输入url=“http://www.nba.com/sports

“我回来了”nba.com/体育““

我只是想nba.com““


Tags: comhttpurl密码wwwsplitnbasports
2条回答

在每个结果后打印url,您将看到需要执行的操作:

>>> url = "http://www.nba.com/sports"
>>> url = url.split(".", 1)[1]
>>> print(url)
nba.com/sports

在这里之后,很明显我们需要做的就是在/处拆分。不要过于复杂:)

>>> url = url.split("/")[0]
>>> print(url)
nba.com

正如注释中提到的@Mark,您还可以使用^{}

>>> from urllib.parse import urlparse
>>> url = "http://www.nba.com/sports"
>>> urlparse(url)
ParseResult(scheme='http', netloc='www.nba.com', path='/sports', params='', query='', fragment='')
>>> urlparse(url).netloc
'www.nba.com'

如果需要的话,你可以从第一个.中去掉所有的内容,但是根据你正在做的事情,你可能不需要这样做。你知道吗

注意,如果您使用的是python2,那么模块是^{}。你知道吗

正确的解决方法:不要重新发明轮子,尽可能多地使用the existing libraries

from urllib.parse import urlsplit
# On Py2, from urlparse import urlsplit

url = "http://www.nba.com/sports"
domain = urlsplit(url).hostname
# split off the last two components, then join them back together to make
# the second level domain
secondlevel = '.'.join(domain.rsplit('.', 2)[-2:])
print(secondlevel)

这让你nba.com。你知道吗

相关问题 更多 >