问题是,无论我做什么,如果没有正则表达式的帮助,我似乎都无法创建一个正常化(而不是验证)的函数.例如,我不希望我的代码打印invalid
或valid
邮箱地址,而是希望它:
- 过滤出BEFORE个
@gmail.com
部分的+
个标志、.
个标志等; - 确保程序不区分大写字母和非大写字母(返回相同的内容).
以下是我正在try 过滤的当前邮箱地址:
johnsmith+panerabread@gmail.com
# should return johnsmith@gmail.com
jOhN.sMiTh@gmail.com
# should return johnsmith@gmail.com
以下是我目前所做的工作:
def normalizeEmail(emailIn):
if emailIn != regex:
ch_1 = '+'
ch_2 = '.'
new_emailIn = (emailIn.lower().split(ch_1, 1)[0]).replace() + '@gmail.com'
if emailIn.endswith('@gmail.com'):
return new_emailIn
if new_emailIn != new_emailIn.endswith('gmailcom'):
return (new_emailIn.lower().split(ch_2, 1)[0])
if __name__ == "__main__":
print(normalizeEmail('johnsmith+panerabread@gmail.com'))
print(normalizeEmail('jOhN.sMitH@gmail.com'))
.
需要更换,+
之后的任何东西都应该拆卸.
早些时候,我try 了regex,但它似乎从未正确地正常化邮箱,并且会返回我定制的异常错误:
Invalid Email Address
对于正则表达式,我try 了:
import re
def normalizeEmail(emailIn)
regex = '/^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/'
if emailIn == regex:
return 'emailIn'
if emailIn != regex
return 'Invalid Email Address'
输出:
Invalid Email Address
我研究这个程序已经有一段时间了,我真的很沮丧,因为我不能破解它.
请注意,该功能不能太具体,因为它需要正常化一个包含35个其他邮箱地址的字典.然后,我将把列表汇总为标准化的邮箱,并创建它们的列表.
请帮帮忙.这是我编程的头三个月,我已经快要死了.
我try 了正则表达式,并希望返回预期的邮箱格式,但事实并非如此,所以我正在寻找一个不使用正则表达式的解决方案.