【问题标题】:Clean www.test.com to test.com [duplicate]将 www.test.com 清理到 test.com [重复]
【发布时间】:2020-04-22 19:50:15
【问题描述】:

我目前使用以下方法清理网站。

http://www.example.com > example.com
https://www.example.com > example.com
http://example.com > example.com

然而,

www.example.com > www.example.com

如何确保 www.example.com 变成 example.com

import re

website = "http://www.example.com"
def clean_website(website):
    """
    Transform http://google.com, https://google.com, http://www.google.com and
    https:www.//google.com into google.com.
    """
    url = re.compile(r"https?://(www\.)?")
    return url.sub("", website).strip().strip("/")

clean_website(website)

【问题讨论】:

  • 正则表达式第二个斜线之后的所有内容!
  • 请使用 example.com 或 *.example 作为示例,因为它们是为 purposes 保留的。
  • 我改变了@Wouterr

标签: python regex


【解决方案1】:

试试这个:

import re

website = "http://www.test.com"
def clean_website(website):
    r = "^http.*\/\w*.?"
    x = re.findall(r,website)
    for i in x :
        website = website.replace(i,'')
    return(website)

【讨论】:

  • 这不会删除其他子域。
  • 现在它包括子域匹配:)
  • 仍然不支持 sftp、ports 或任何在后缀后包含路径的 url,副本提供了更强大的解决方案
  • 感谢 Negar37 的帮助。我现在和tldextract 一起去了。用最少的代码解决了这个问题。
【解决方案2】:

您可以按如下方式使用自定义 Regex 模式:

import re

website = "http://www.test.com"

url = re.compile(r'[a-zA-Z0-9]+.com') # custom Regex pattern

print(url.findall(website))

描述中所有示例的输出:

['test.com']

如果需要,请随意在第 3 行的 [] 中添加任何特殊字符。

【讨论】:

  • [a-zA-Z0-9]+ 域名有点短
【解决方案3】:

你可以使用 tldextract

import tldextract

def clean_website(url):
    # Example of ext if input is http://www.test.com
    ## ExtractResult(subdomain='www', domain='test', suffix='com')

    ext = tldextract.extract(url)

    return '.'.join(ext[1:]) # domain + suffix

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-05
    • 2013-12-22
    • 1970-01-01
    相关资源
    最近更新 更多