2016-09-27 1 views
0

"il doit contenir un symbole" @ " qui n'est NI le premier caractère ni le dernier caractère de la chaîne."Validation du symbole "@" dans un e-mail. Non validation de l'email lui-même

Donc j'ai cette tâche dans ma classe et je ne peux pas pour la vie de moi comprendre comment faire le booléen faux pour l'avoir à l'avant ou à la fin de l'e-mail. C'est ce que j'ai jusqu'ici.

def validEmail1(myString): 
    for i in myString: 
     if i == "@": 
      return True 
    else: 
     return False 

Répondre

2

Avec s que votre chaîne, vous pouvez faire:

not (s.endswith('@') or s.startswith('@')) and s.count('@')==1 

test:

def valid(s): 
    return not (s.endswith('@') or s.startswith('@')) and s.count('@')==1 

cases=('@abc','[email protected]','[email protected]', '[email protected]@def') 

for case in cases: 
    print(case, valid(case)) 

Prints:

@abc False 
[email protected] False 
[email protected] True 
[email protected]@def False 

Vous pouvez également utiliser une tranche, mais vous devez également vous assurer (indirectement) que la chaîne ne démarre pas ou se terminer par '@' en vous assurant que le nombre est de 1:

def valid(s): 
    return '@' in s[1:-1] and s.count('@')==1 
+1

Ceci est la bonne réponse réelle. L'autre réponse vérifie tout sauf le premier et le dernier. Vous pouvez également utiliser 'return '@" non dans [s [0], s [-1]] ..' –

+0

Pourquoi supposez-vous que le nombre doit être de 1? Les adresses e-mail valides peuvent avoir plusieurs (@) symboles '@' ... –