我希望能够解析电子邮件地址来隔离域部分,并测试电子邮件地址是否是给定域的一部分。在
据我所知,email
模块没有这样做。除了通常的字符串处理和正则表达式例程之外,还有什么值得使用的方法来完成这项任务吗?在
注意:我知道如何处理python字符串。我不需要基本的食谱,尽管很棒的食谱是受欢迎的。在
这里的问题本质上是电子邮件地址的格式(示意性地)userpart@sub\.domain\.[sld]+\.tld
。在
在@之前剥离部分很容易;困难的部分是解析域,以确定哪些部分是更大组织域中的子域,而不是一般的二级(或者,我猜甚至更高阶)公共域。在
想象一下,解析user@mail.organisation.co.uk
发现组织的域名是organisation.co.uk
,因此能够将mail.organisation.co.uk
和{
基本上有两种可能的(非基于dns的)方法:构建一个有限自动机,它知道所有通用sld及其与tld的关系(包括流行的“伪”sld,如uk.com
),或者根据必须存在tld的知识来猜测,并假设如果有三个(或更多)元素,如果第二级域少于三个/四个字符,则该域为通用域。每种方法的相对缺点应该是显而易见的。在
另一种选择是通过DNS条目来确定什么是注册域,这有其自身的缺点。在
不管怎样,我宁愿背负别人的工作。在
{51python的注释是^ 514的,就像^ 514的注释一样:
通过这个简单的脚本,我们将
@
替换为@.
,这样我们的域就终止了,endswith
将与以相同文本结尾的域不匹配。相关问题 更多 >
编程相关推荐