gpt4 book ai didi

Python:正则表达式函数解析电子邮件字符串并返回元组或如果输入无效则返回值错误

转载 作者:行者123 更新时间:2023-12-04 08:04:37 24 4
gpt4 key购买 nike

我想编写一个函数来解析电子邮件输入并返回一个带有 (id, domain) 的元组。 id 是用户名,domain 是域名。以@ 字符分隔的电子邮件
例如:kyle@asu.edu 将解析为 ('kyle', 'asu.edu')。但下面是对该函数的一些额外限制:

  • 用户名以字母开头
  • 域名以字母字符结尾
  • 允许使用特殊字符,例如 .、-、_ 或 +
  • 不允许使用空格字符,包括前导或尾随空格

  • 因此,如果违反上述任何规则,则电子邮件输入不被视为有效的电子邮件地址,应引发 ValueError。
    以下是我尝试的代码,但不太有效:
    def email_func(string_input):
    """Parses a string as an email address, returning an (id, domain) pair."""
    ###
    ### YOUR CODE HERE
    regex_parse = re.search(r'([a-zA-Z_+-.]+)@([a-zA-Z.-]+)', string_input)
    # print (regex_parse)

    try:
    return regex_parse.groups()

    except ValueError:
    raise ValueError ('not a valid email address')
    ###
    对于一个简单的例子,它有效。
    email_func('kyle@asu.edu') returns `('kyle', 'asu.edu')` which is correct.  
    我的代码不起作用的实例:
  • 对于带有空格的无效输入字符串,我不会引发 ValueError。例如:email_func('kyle @asu.edu')输出错误:
    ---> 11 返回 regex_parse.groups()
    AttributeError: 'NoneType' 对象没有属性 'groups'
  • 我没有收到前导空格的 ValueError:例如:email_func(' kyle@asu.edu')输出 ('kyle', 'asu.edu')尾随空格也有同样的问题。
  • 如何在我的正则表达式中指定电子邮件不能以数字开头或结尾/必须是字母字符?
  • 最佳答案

    我假设您的输入只是一个电子邮件地址,您需要对其进行验证。所以没有必要使用search .您真正要找的是 match 功能。
    对您的代码进行一些小的更改,它看起来像这样:

    def email_func(string_input):
    """Parses a string as an email address, returning an (id, domain) pair."""
    ###
    ### YOUR CODE HERE
    regex_parse = re.match(r'([a-zA-Z_+-.]+)@([a-zA-Z.-]+)', string_input)
    # print (regex_parse)

    if regex_parse:
    return regex_parse.groups()

    else:
    raise ValueError ('not a valid email address')
    ###

    关于Python:正则表达式函数解析电子邮件字符串并返回元组或如果输入无效则返回值错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66281524/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com