将字符串的字符分隔为列表(python)

时间:2017-08-31 13:45:10

标签: python list validation

我正在编写一个类似电子邮件验证程序的程序,用户输入他们的电子邮件,然后程序检查它是否具有必要的组件。我必须检查它是否包含@符号。我希望逐个字符地拆分电子邮件并将其放入列表中,以便我可以遍历列表以获取电子邮件。

我目前有这个:

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.')

6 个答案:

答案 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")