/ / Dividir arquivo baseado na ocorrência múltipla de delimitador - python, regex

Dividir arquivo baseado na ocorrência múltipla de delimitador - python, regex

Eu corri para a seguinte tarefa para dividir um arquivo com base em várias ocorrências de um delimitador.
Eu tenho um arquivo que tem os seguintes dados:

Number of Employees       - 95

==============================================================================
Telephone Number -  972123111111
Empl Name  -   David
Designation  - Software Engineer
Address: **********
Doamin: Python
==============================================================================
Telephone Number -  972123111112
Empl Name  - Glen
Designation  - Software Engineer
Doamin: Python
==============================================================================
Telephone Number -  972123111111
Empl Name  - Jhon
Designation  - Software Engineer
Address: **********
Doamin: Python
==============================================================================

Neste arquivo, quero dividir as informações de cada funcionário entre "=" e, em seguida, imprimir o conteúdo de todos os funcionários, como abaixo:

Details of Employee: (Employee Name)
Telephone Number: (employee telephone number)
Designation : (employee desgination)

Eu escrevi o código para buscar dados de um arquivo em uma variável e usar abaixo da expressão regular para obter os dados, mas sem sucesso:

re.findall("[^=]=*.*?[=*$]", a)

Respostas:

0 para resposta № 1

Tente este snippet, ele armazena todos os dados de funcionários como dicionários em uma lista completa

import re
data_separator_regepx     = "-|:" #theres - and : as separators in sample text
employee_separator_regexp ="^=+$"
employees      = []
with open("test.txt") as f_in:
curr_employee = {}
for idx,line in enumerate(f_in):
if not idx : continue #skip first line
line = line.strip()
if not line: continue #skip empty lines
if re.match(employee_separator_regexp,line):
if curr_employee:
employees.append(curr_employee)
curr_employee = {}
else:
line = re.split(data_separator_regepx,line)
key, value = line[0],line[1]
curr_employee[key.strip()]=value.strip()

for employee in employees:
print "Details of Employee: ({})".format(employee.get("Empl Name",""))
print "Telephone Number: ({})".format(employee.get("Telephone Number",""))
print "Designation: ({})".format(employee.get("Designation",""))

2 para resposta № 2

Usar re.split() ao invés de re.findall() igual a:

re.findall(r"^=+$", a)