【问题标题】:Validating where the "@" symbol is in an email. Not validation of the email itself验证“@”符号在电子邮件中的位置。不验证电子邮件本身
【发布时间】:2017-02-05 16:36:57
【问题描述】:

"它必须包含一个“@”符号 这既不是字符串中的第一个字符也不是最后一个字符。”

所以我在课堂上有这个作业,我一生都无法弄清楚如何将布尔值设为 false,因为它位于电子邮件的开头或结尾。这是我目前所拥有的。

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

【问题讨论】:

    标签: python python-3.x character email-validation


    【解决方案1】:

    使用s 作为你的字符串,你可以这样做:

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

    测试:

    def valid(s):
        return not (s.endswith('@') or s.startswith('@')) and s.count('@')==1
    
    cases=('@abc','abc@','abc@def', 'abc@@def')
    
    for case in cases:
        print(case, valid(case))
    

    打印:

    @abc False
    abc@ False
    abc@def True
    abc@@def False
    

    您也可以使用切片,但您还需要(间接地)通过确保计数为 1 来确保字符串不以 '@' 开头或结尾:

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

    【讨论】:

    • 这是实际的正确答案。另一个答案检查除第一个和最后一个之外的所有内容。你也可以使用return "@" not in [s[0], s[-1]] ..
    • 为什么你认为计数必须是 1?有效的电子邮件地址可以有多个(引用)@ 符号...
    猜你喜欢
    • 2018-02-10
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 2012-08-10
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    相关资源
    最近更新 更多