首页 > 解决方案 > 如何检查字符串中是否有特定字符(在 Python 中)

问题描述

我现在正在编写一个有趣的小系统(在 Python 中)。我在写邮件检查器时遇到了麻烦。它应该检查电子邮件地址是否包含“。” 和 '@'。这是代码:

def check_mail(mail):
    email = str(mail)
    needed_charachters = ['@', '.']
    if needed_charachters[1] not in email:
        print(send_error('Mail invalid (has to contain ".")'))
        return False
    if needed_charachters[0] not in email:
        print(send_error('Mail invalid (has to contain "@")'))
        return False
    elif '.' in email:
        print('contains .') 

我已经尝试了一些技术,但每次都出现同样的错误。如果我将“ahksdasdhk”作为邮件输入,则会出现我的错误“必须包含”。“”这没关系,也是我想要的。但是当邮件是“gaagsggg@ksdkj.wssf”时,仍然会出现同样的错误。顺便说一句,这是我给错误创建者的代码:

def send_error(message):
    return f'ERROR: {message}'

标签: pythonstring

解决方案


elif是问题,试试这个:

def check_mail(mail):
    email = str(mail)
    needed_charachters = ['@', '.']
    if needed_charachters[1] not in email:
        print(send_error('Mail invalid (has to contain ".")'))
        return False
    if needed_charachters[0] not in email:
        print(send_error('Mail invalid (has to contain "@")'))
        return False
    else:
        print('Valid mail')
        return True

并建议循环执行:

def check_mail(mail):
    email = str(mail)
    needed_charachters = ['@', '.']
    for character in needed_characters:
        if character not in email:
            print(send_error('Mail invalid (has to contain ' + character + ')'))
            return False        
        else:
            print('Valid mail')
            return True

推荐阅读