2016-01-04 2 views
1

Я столкнулся с следующей задачей, чтобы разбить файл на основе нескольких вхождений разделителя.
У меня есть файл, который имеет следующие данные:Сплит-файл на основе множественного ввода разделителя

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

В этом файле я хочу разделить каждую информацию о сотрудниках между «=», а затем распечатать содержимое для всех сотрудников, как показано ниже:

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

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

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

ответ

0

Попробуйте этот фрагмент, он хранит все данные о сотрудниках как словари в целом список

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','')) 
+0

Спасибо за вашу помощь. Но у меня есть небольшое сомнение в приведенном выше коде, где вы пропускаете первую строку с помощью idx. Как я могу пропускать строки «n». Потому что это очень большой файл с большим количеством данных сверху –

+0

, если idx xecgr

Смежные вопросы