我正在编写一个类似电子邮件验证程序的程序,用户输入他们的电子邮件,然后程序检查它是否具有必要的组件。我必须检查它是否包含@符号。我希望逐个字符地拆分电子邮件并将其放入列表中,以便我可以遍历列表以获取电子邮件。
我目前有这个:
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 :(得分:3)
不需要将字符串转换为列表以便迭代它。 在Python中,字符串已经可以迭代,因此你可以这样做:
for c in email:
if c != '@':
print(...)
但Python为您提供了更好的构造,in
运算符:
if '@' not in email:
print(...)
答案 1 :(得分:1)
你可以做到
if '@' not in email:
print('Your email is invalid because it does not contains an @ sign.')
答案 2 :(得分:0)
如果您只需要检查字符串中是否包含字符,则可以使用:
if char in string:
所以在你的情况下:
if '@' in email:
print("This appears to be a valid email.")
答案 3 :(得分:0)
为什么不使用python-regex? 它相对较快。
把它放在if子句中: -
for i in mylist:
email_addr = re.search(r"(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)", i)
if email_addr:
print email_addr.group()
else:
print 'incorrect format'
使用email_addr.group()检索地址
你很高兴。enter code here
答案 4 :(得分:0)
您可以轻松使用正则表达式存档您想要的内容
list = ['email@emailprovider.com', 'not_an_email']
for email in list:
if not re.match('(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)', email):
print('Your email ({}) is invalid because it does not contains an @ sign.'.format(email))
答案 5 :(得分: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")