Python как проверить, является ли что-то alphanumeri c за исключением определенных значений - PullRequest
0 голосов
/ 09 февраля 2020

Я пытаюсь определить, является ли строка электронным письмом или нет. Требования, конечно, @ mail.com, первое письмо должно быть заглавным, и оно должно быть alphanumeri c, за исключением @ и точки. То, что я искал, есть ли способ для меня, чтобы проверить, является ли электронная почта alphanumeri c, за исключением периода и @

Что я хотел бы, чтобы код возвращал True для отправлять по электронной почте, если и только если первая буква заглавная, она имеет @ emuail.com и alphanumeri c за исключением @ и точки. То, что я хотел бы, это решение, которое проверяет буквенно-цифровые символы, за исключением @ и точки в части @ emauil.com электронной почты.

Я думал, что мог бы отделить электронную почту в части @email и проверить для .isalnum для всего до @email, но я просто хотел посмотреть, есть ли более простой способ.

Вот мой текущий код, который, конечно, возвращает все 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)

Ответы [ 2 ]

1 голос
/ 09 февраля 2020

При выполнении поиска / тестирования строк, которые даже скромно усложняются, обычно лучше (более читабельно и более гибко) использовать регулярные выражения .

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)

Обратите внимание, что дефисы разрешены в адресах электронной почты, но если вы хотите по какой-то причине запретить их, удалите их из регулярного выражения.

0 голосов
/ 09 февраля 2020

Этот генератор вернет действительные электронные письма. Если вы хотите больше правил, добавьте их к условию. re лучше, однако.


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]]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...