从字符串域名中删除子域

Jis*_*han 0 python

所以我编写了一个小函数来从输入域字符串中删除子域(如果有):

def rm(text):
    print(text.replace(text, '.'.join(text.split('.')[-2:])), end="")
    print("\n")

if __name__ == "__main__":
    rm("me.apple.com")
    rm("not.me.apple.com")
    rm("really.not.me.apple.com")
    # problem here
    rm("bbc.co.uk")
Run Code Online (Sandbox Code Playgroud)

一切都很好,直到你有.something.somethingtld., like.co.uk.co.in

所以我的输出是:

apple.com
apple.com
apple.com
--> co.uk
Run Code Online (Sandbox Code Playgroud)

它应该在的地方,

apple.com
apple.com
apple.com
bbc.co.uk
Run Code Online (Sandbox Code Playgroud)

如何以优雅的方式修复/创建该函数,而不是检查所有可能的双重顶级域名? 编辑:如果这很重要的话,我将不得不检查数百万个域名。所以我要做的就是将一个域传递给我的函数并获得一个干净的、无子域的域。

Mur*_*nik 7

tldextract包应该根据公共后缀列表为您完成繁重的工作它不是防弹的,但应该适用于所有合理的用例:

import tldextract
def rm(text):
    return tldextract.extract(text).registered_domain
Run Code Online (Sandbox Code Playgroud)