问题描述
我的功能有问题,应该从域中删除 tld。如果域有一些子域,它可以正常工作。例如:
输入:asdf.xyz.example.com
输出:asdf.xyz.example
问题是当域没有任何子域时,域前有一个点
输入:example.com
输出:.example
这是我的代码:
res = get_tld(domain,as_object=True,fail_silently=True,fix_protocol=True)
domain = '.'.join([res.subdomain,res.domain])
函数 get_tld
来自 tld library
有人能帮我解决这个问题吗?
解决方法
通过非常简单的字符串操作,这是您要找的吗?
d1 = 'asdf.xyz.example.com'
output = '.'.join(d1.split('.')[:-1])
# output = 'asdf.xyz.example'
d2 = 'example.com'
output = '.'.join(d2.split('.')[:-1])
# output = 'example'
,
您可以使用过滤。看起来 get_tld
按预期工作,但 join
不正确
domain = '.'.join(filter(lambda x: len(x),[res.subdomain,res.domain]))
,
另一个简单的版本是这样的:
def remove_tld(url):
*base,tld = url.split(".")
return ".".join(base)
url = "asdf.xyz.example.com"
print(remove_tld(url)) # asdf.xyz.example
url = "example.com"
print(remove_tld(url)) # example
*base,tld = url.split(".")
将 TLD 放在 tld
中,将其他所有内容放在 base
中。那么你只需 join
tĥat 和 ".".join(base)
。