Всем привет, обращаюсь потому что уже все мозги сломал, думаю весь день. В общем есть файл(log.txt) следующего содержания:
https://dropmefiles.com/nDxU0
Задача в том, чтобы:
1) Спарсить файл и найти e-mail адреса, в коде (mail_unfiltered = [])
2) Отфильтровать список на похожие, в коде (mail_list = [])
3) После подсчитать сколько раз определенное мыло отправляло сообщения и вывести в файл результата {мыло:сколько раз отправляло сообщение}
(В коде функция def parse_key(key) которую я не осилил) соответственно решено было просто передать в функцию мыло из фильтрованного списка ( mail_list[] ) по очереди и при сравнении с значением в нефильтрованном списке ( mail_unfiltered[] ) прибавлять счетчик количества на +1 но как это оформить я запутался, помогите, как записать именно функцию def parse_key? Остальной код пусть остается как есть. Пока в питоне плохо разбираюсь, код ниже, спасибо!
import os
import re
import numpy as np
def mkdir_cmd():
if not os.path.exists(r".\results"):
os.mkdir(r".\results")
print(r'Dir made')
def parse_key(key): #считаем сколько раз отправлял письма почтовый ящик из списка
global mail_unfiltered
mail_unfiltered_local = mail_unfiltered
found_list = []
count = 0
for val in mail_unfiltered_local:
if (val == key):
found_list.append(val)
count += 1 #если встретили такое мыло увеличиваем счетчик отправок
return found_list
def filter_list(list):
new = []
for i in list:
if i not in new: #availability in list <new[]> check
new.append(i)
return new
def get_data():
global mail_list
global mail_unfiltered
#search for patterns
countMail = 0
countMessages = 0
countSuccess = 0
countError = 0
i=0
with open("maillog", "r") as file_read:
for text in file_read:
mail = re.findall(r'(from=<[a-z]+@+[a-z]+.\w\w>)', text)
if (mail):
mail_list.append(mail)
mail_unfiltered.append(mail)
print(mail)
mail_list = filter_list(mail_list) #filtering list on repeats
print("\n" + "Filtered list: ")
print(mail_list)
print("\n" + "UnFiltered list: ")
print(mail_unfiltered)
print("\n")
print("Length of filtered values in list: ")
print(len(mail_list))
print("\n")
print("Length of unfiltered values in list: ")
print(len(mail_unfiltered))
print("\n")
while i < len(mail_list): # здесь надо спарсить нефильтрованный список и посчитать сколько раз e-mail отправлял письма
str1 = ''.join(mail_list[i])
print (parse_key(str1))
i =+ 1
def main():
mkdir_cmd()
get_data()
mail_list = [] # глобальная переменная, хранит список мыл без повторений
mail_unfiltered = [] # глобальная переменная, хранит спарсенные повторяющиеся e-mail'ы
if __name__ == '__main__':
main()