2017-08-31 193 views
1

我正在编写一个程序,它就像一个电子邮件验证程序,用户输入他们的电子邮件,然后程序检查它具有必要的组件。我必须检查它是否包含@符号。我想按字符拆分电子邮件字符并将其放入列表中,以便我可以循环访问列表以获取电子邮件。将字符串中的字符分隔成一个列表(python)

目前,我有这样的:

email=input('Please enter your email address: ') 
mylist=[] 
mylist(email) 
for i in mylist: 
    if i != '@': 
     at=True 
     print('Your email is invalid because it does not contains an @ sign.') 
+0

为什么你认为你需要将字符串转换为列表?你可以直接使用'for i in email'。或者更好的是,只需测试一个字符:'if'@'不在电子邮件中:' –

+0

否则,只需使用'mylist = list(email)'。 –

+2

使用正则表达式来验证电子邮件:https://stackoverflow.com/questions/8022530/python-check-for-valid-email-address – MedAli

回答

4

没有必要把字符串转换成一个列表以遍历它。 在Python中,字符串已经是迭代的,所以你可以做:

for c in email: 
    if c != '@': 
     print(...) 

但是Python的为您提供更好的构建中,in操作:

if '@' not in email: 
    print(...) 
0

如果你只是需要检查一个字符串里面有一个角色,你可以使用:

if char in string: 

所以你的情况:

if '@' in email: 
    print("This appears to be a valid email.") 
0

你可以做

if '@' not in email: 
    print('Your email is invalid because it does not contains an @ sign.') 
+0

谢谢,它的工作原理 –

0

你为什么不使用Python正则表达式? 它比较快。

把这个if语句: -

for i in mylist:
email_addr = re.search(r"(^[a-zA-Z0-9_.+-][email protected][a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)", i) if email_addr: print email_addr.group() else: print 'incorrect format'

,并使用email_addr.group() retreive地址,你是好去。 enter code here

0

您可以轻松地使用正则表达式来存档你想要什么

list = ['[email protected]', 'not_an_email'] 
for email in list: 
    if not re.match('(^[a-zA-Z0-9_.+-][email protected][a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)', email): 
     print('Your email ({}) is invalid because it does not contains an @ sign.'.format(email)) 
0

在Python字符串已经迭代。所以,你可以使用下面的代码来实现你想要的。

email = input("Enter your email")  
if '@' not in email: 
    print("The email is invalid as it does not contains @.") 
else: 
    print("valid email") 
相关问题