Разбор электронной почты информации из текстового файла - PullRequest
1 голос
/ 22 апреля 2019

Я обновил этот код. Прямо сейчас этот код получит имя, фамилию и адрес электронной почты с адресов электронной почты в текстовом файле. Мне просто нужно добавить счетчик, который подсчитывает количество уникальных доменных имен! так например:

taco.salad@tacos.com
burrito.fest@burrito.com
asmith@tacos.com

вернет это:

taco.salad@tacos.com
first name: taco
last name: salad
domain: tacos.com

burrito.fest@burrito.com
first name: burrito
last name: fest
domain: burrito.com

asmith@tacos.com
first name: a
last name: smith
domain: tacos.com

number of emails found:
3
number of unique domains found:
2

Вот что у меня есть:


import re

count = 0
fname = input('Enter a filename: ')

afile = open((fname), "rt")
for email in afile:
  if re.match(r'[\w\.-]+@[\w\.-]+',  email):

    print("Found email:" + email)
    count+=1
    split_email = email.split('@')

    name = str(split_email[0])
    for letter in name:
        if "." not in name: 
            splitname = ""
        else:
            splitname = name.split('.')



    try:
        print("First name:" + splitname[0])
        print("Last name:" + splitname[1])
        print ("Domain:" + split_email[1])
    except:
        print("First name:" + name[0])
        print("First name:" + name[1:])
        print ("Domain:" + split_email[1])




    print("\n")
print ("Number of emails found: ")    
print (count)
input('Press ENTER key to continue: ')

1 Ответ

1 голос
/ 22 апреля 2019
import re

# You can switch this with your file data
example_emails = ['testUwuw@gmail.com', 'FirstLast@email.com', 'FLast@email.com']

for email in example_emails:
  if re.match(r'[\w\.-]+@[\w\.-]+',  email):
    print("Found email:" + email)
    # Split string on char @
    # Example input:
    # testUwu@gmail.com
    # Output:
    # ['testUwu', 'gmail.com']
    split_email = email.split('@')
    # Split string on uppercase letters
    credentials = re.findall('[a-zA-Z][^A-Z]*', split_email[0])
    print("First name:" + credentials[0])
    print("Last name:" + credentials[1])
    print ("Domain:" + split_email[1])
    # Newline for nicer output formatting
    print("\n")

Пример вывода:

Found email:FirstLast@email.com
First name:First
Last name:Last
Domain:email.com


Found email:FLast@email.com
First name:F
Last name:Last
Domain:email.com

Этот пример кода будет работать только и только с вашими 2 форматами электронной почты.

Обратите внимание, что вам, вероятно, следует использовать некоторую обработку исключений в случае, если некоторые другие форматы включаются, например, Test@gmail.com вызовет исключение IndexError, поскольку программа ожидает 2 заглавных слова. Также для слов с более чем двумя заглавными буквами код будет игнорировать все буквы, которые идут после второй заглавной буквы.

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

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