在python中清理电子邮件地址的最简单方法



我的电子邮件地址有问题,只要稍作更正,它们就可以转换为有效的电子邮件地址。

例如:

%20adi@gmail.com, --- Not valid
'sam@tell.net,  --- Not valid
(hi@telligen.com),  --- Not valid
(gii@weerte.com),  --- Not valid
:qwert34@embright.com,  --- Not valid
//24adifrmaes@microsot.com  --- Not valid
tellei@apple.com    ---  valid
...

我可以写";如果为"否则";,但如果一个新的电子邮件地址有新的问题,我需要写";如果其他";并每次更新。

清除所有这些小问题的最佳方法是什么,一些python包或regex?请放心。

你可以这样做(我基本上会检查电子邮件中的元素是阿尔法字符还是点,如果不是,就会删除它们(:

emails = [
'sam@tell.net', 
'(hi@telligen.com)', 
'(gii@weerte.com)',  
':qwert34@embright.com',  
'//24adifrmaes@microsot.com',
'tellei@apple.com'
]
def correct_email_format(email):
return ''.join(e for e in email if (e.isalnum() or e in ['.', '@']))
for email in emails:
corrected_email = correct_email_format(email)
print(corrected_email)

输出:

sam@tell.net
hi@telligen.com
gii@weerte.com
qwert34@embright.com
24adifrmaes@microsot.com
tellei@apple.com

数据清理很混乱,但我发现定义一组规则的方法是一种简单的管理方法(规则的顺序很重要(:

rules = [
lambda s: s.replace('%20', ' '),
lambda s: s.strip(" ,'"),
]
addresses = [
'%20adi@gmail.com,',
'sam@tell.net,'
]
for a in addresses:
for r in rules:
a = r(a)
print(a)

这是结果输出:

adi@gmail.com
sam@tell.net

确保您编写的测试套件包含无效数据和有效数据。这很容易打破,你可能会经常调整规则。

虽然我在上面的规则中使用了lambda,但它可以是一个接受和返回字符串的任意复杂函数。

如果您有更多不同的测试用例,即email@email.com.,,email@email.com.@_)..email@email.com@@@,那么这实际上是一个复杂的测试用例。尽管如此,你可以剥去它们,但不能局限于最后和开始要剥去的东西。

注意:带有数字和_的电子邮件地址也是有效的。

emails = [
'sam@tell.net', 
'(hi@telligen.com)', 
'(gii@weerte.com)',  
':qwert34@embright.com',  
'//24adifrmaes@microsot.com',
'tellei@apple.com'
]
def clean(email):
return ''.join(filter(lambda x: ord(x) >= 65 or x in ['.', '@', '_'], email))
for email in emails:
print(clean(email))

输出:

sam@tell.net
hi@telligen.com
gii@weerte.com
qwert@embright.com
adifrmaes@microsot.com
tellei@apple.com

相关内容

  • 没有找到相关文章

最新更新