2017-08-31 191 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") 
相關問題