删除URL中网站名称前的每个字符

时间:2018-04-14 00:41:10

标签: python django

例如,如果我有https://stackoverflow.com/questions/ask我想将其剪切为stackoverflow.com/questions/ask,或者如果我http://www.samsung.com/au/,我希望将其剪切为{{1} }}。

我想为此制作模板标签但不确定要返回的内容:

samsung.com/au/

模板

def clean_url(url):
    return ?

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

如果以something//

开头,这是一种快速而又脏的隔离域的方法
def clean(url):
  return url.partition('//')[2].partition('/')[0]

答案 1 :(得分:1)

urllib.parse将为您完成大部分工作:

import urllib.parse
def clean_url(url):
    parts = list(urllib.parse.urlsplit(url))
    parts[0]=""
    cleaned = urllib.parse.urlunsplit(parts)[2:]
    return cleaned

请注意,这并没有切断“www。”,但你不应该这样做;这可能是域名的关键部分。如果您真的想要,请添加:

if cleaned.startswith("www."):
    cleaned = cleaned[4:]

答案 2 :(得分:0)

对于用例,您描述了。您可以拆分双反斜杠,然后再使用它或从那里开始工作。

def clean_url(url):
    clean = url.split('//')[1]
    if clean[0:4] == 'www.':
        return clean[4:]
    return clean

但是,由于子域名(例如' www')可以用作网址的重要部分,因此您可能希望将其保留在其中。例如,www.pizza.com和pizza。 com可以链接到不同的页面。

要考虑的其他事项是urlparse库或正则表达式,但它们可能有点过分。