Python проверяет правильность строки списка писем (например, «email1, email2, email3, ...») - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть строка электронных писем, разделенных запятой и 1 пробелом:

string_of_emails = "email1@company.com, email2@company.com, email3@company.com, ... , email999@company.com"

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

Значение: убедитесь, что КАЖДЫЙ адрес электронной почты является VALID (user@domain.com) + каждое письмо разделено запятой и 1 пробелом + последнее письмо не должно содержать запятую.

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Просто хочу поделиться грубой идеей ...

import re
soe = "abc_123@123.com ,you@yahoo.com , we@gmail.co.uk, gmail.com, me@outlook.com ,"
soel = soe.split(',')

#first entry cannot have space
if soel[0].count(" ")!=0 :
    print("Error\t\t:: First entry cannot contain space!")
#then, all subsequent must start with and contain exactly one space, along with a valid email
for email in soel[1:]:
    if email.count(" ") > 1:
        print("Invalid entry\t::" + email, ":: too many spaces")
        continue
    #simple email regex (with a single space in front)
    match = re.search(r' ([\w\.-]+)@([\w\.-]+)', email)
    if match == None:
        print("Invalid entry\t::" + email + ":: make sure it follows the rule!")
    else:
        print("Valid entry\t::" + email)

или, для более подробной информации,

import re
soe = " abc_123@123.com,you@yahoo.com , we@gmail.co.uk, gmail.com, me@outlook.com ,"
soel = soe.split(',')

end = len(soel)
if soel[-1].strip()=='':
    print("Error:: Comma near the end of string!")
    end -= 1
if soel[0].count(" ")>0:
    print("Error:: First entry cannot contain space!")
for email in soel[1:end]:
    if email.count(" ") != 1 :
        print("Error:: " + email + " :: too many spaces!")
        continue
    if not email.startswith(" "):
        print("Error:: " + email + " :: one space is needed after comma!")
        continue
    #simple email regex
    match = re.search(r'([\w\.-]+)@([\w\.-]+)', email)
    if match != None:
        print("Correct format: " + match.group())
0 голосов
/ 13 декабря 2018

Вы можете сначала преобразовать строку в список:

emails = string_of_emails .split(", ")

После этого вы можете либо выполнить собственную проверку регулярных выражений для каждого отдельного электронного письма, либо использовать один из множества доступных пакетов, чтобы сделать это дляВы: Валидатор электронной почты Python

for mail in emails:
    # do your own regex check here
    # OR
    # Use the email validator like this
    v = validate_email(email) # function from the email validator
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...