Python如何检查除某些值以外的内容是否为字母数字

2024-09-30 16:34:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试确定字符串是否是电子邮件。当然,要求是@email.com,第一个字母必须是大写,并且必须是字母数字,除了@和句点。我想知道的是,除了句号和@

我想要的是,当且仅当电子邮件的第一个字母是大写字母时,代码才会返回True,它有@emuail.com,并且除了@和句点外,它是字母数字。我想要的是一个解决方案,除了电子邮件的@emauil.com部分中的@和句点之外,检查字母数字

我想我可以在@email部分分离电子邮件,并在@email之前检查.isalnum,但我只是想看看是否有更简单的方法

这是我当前的代码,由于@和句点,它当然返回所有False:

emails = ['Hello@emuail.com', 'Hello2@emuail.comaas', 'hello--1@emuail.com']

result = []

for idx, email in enumerate(emails):
  if '@emuail.com' in email and email[0].isupper() and email.isalnum():
    result.append(True)
  else:
    result.append(False)

print(result)

Tags: and代码incomfalsetrue电子邮件email
2条回答

此生成器将返回有效的电子邮件。如果需要更多规则,请将它们添加到条件中^然而,{}更好


emails = ['Hello@emuail.com', 'Hello2@emuail.comaas', 'hello 1@emuail.com']

[i for i in emails if '@' in i and i[-4:] == '.com' and i.split('@')[0].isalnum() and '@' is not i[-5]]

在进行稍微复杂的字符串搜索/测试时,使用regular expressions通常会更好(可读性更强、更灵活)

import re

# from https://emailregex.com/
email_pattern = re.compile(r"(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)")

emails = ['Hello@emuail.com', 'Hello2@emuail.comaas', 'hello 1@emuail.com']

for email in emails:
    if email_pattern.match(email):
        print(email)

请注意,电子邮件地址中允许使用连字符,但如果出于某种原因不允许使用连字符,请从正则表达式中删除它们

相关问题 更多 >