Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python标记域和子域?_Python_Url_Dns_Subdomain - Fatal编程技术网

如何使用python标记域和子域?

如何使用python标记域和子域?,python,url,dns,subdomain,Python,Url,Dns,Subdomain,我正在处理url数据,我无法使用python将url分类为域和子域 我正在尝试正则表达式来提取域,但我不知道如何将它返回到真或假子域 比如说 a = ['facebook.com', 'profile.facebook.com'] 我希望结果是 [False, True] 你需要决定你想对域名施加多大的限制,其余的 可能看起来像: >>> import re >>> a = re.compile('[0-9a-z\.]*\.[0-9a-z]*\.com')

我正在处理url数据,我无法使用python将url分类为域和子域

我正在尝试正则表达式来提取域,但我不知道如何将它返回到真或假子域

比如说

a = ['facebook.com', 'profile.facebook.com']
我希望结果是

[False, True]

你需要决定你想对域名施加多大的限制,其余的 可能看起来像:

>>> import re
>>> a = re.compile('[0-9a-z\.]*\.[0-9a-z]*\.com')
>>> bool(a.match('facebook.com'))
False
>>> bool(a.match('sub.facebook.com'))
True

在这里,我假设域将使用
.com
,但您可以很容易地更改它。

如果我有两个级别的子域,例如apps.cs.ipb.com,而顶级域是不同的(不仅仅是.com)?您可以检查自己,如果您将
sub.sub.domain.com
放入,此正则表达式仍将返回
True
。要支持其他顶级域名,您可以将
com
替换为
(com | net | org)
。怎么样?它被归类为域。我将正则表达式更改为('[0-9a-z:/-0-9a-z\.]*\.[0-9a-z]*\.(com | net | org | id | co.id'),因为url前面有http。但是也许我的正则表达式是错误的,你需要支持dash的唯一添加是
\-
所以
'[0-9a-z\.-]*.[0-9a-z]*.[com | net')
将在这个域中工作,或者如果你希望在主域
'[0-9a-z\.-]*.[0-9a-z\-]*.[com | net')
这个正则表达式将匹配许多无效的域名。它也将无法匹配许多有效的域名,比如带有连字符的域名。你的问题太广泛了。如果您没有指定您在所有通用情况下使用的特定域名,那么您不能仅使用正则表达式将其拆分为域/子域,您需要类似于公共后缀列表的内容。否则,对于
minefi.gouv.fr
,域/子域是什么?对于
www.dk
?这是两个简单正则表达式失败的有效例子。