2016-12-01 4 views
0

Так у меня есть файл, который отформатирован что-то вроде этого:Создание экземпляров из файла данных текстовых

Имя: Toby Lima
DOB: 12/12/12
Pay: 50000

Имя: Интерфейс пользователя
DOB: 11/11/11
Pay: 60000

Так что я в основном нужно читать через каждую строку и извлекать необходимую информацию, а затем создать instanc сотрудника e, который я добавлю в список. Пустые строки означают начало нового сотрудника. Поэтому мне нужно создать отдельные экземпляры для каждого сотрудника. Я не уверен, что нужно изменить в моем коде для этого.

Моя попытка решения:

temp =[] 

    with open(path, mode='r', encoding='utf-8-sig') as file: 

     for line in file: 

      if line != '\n': 
       temp.append([value for value in line.strip().split(':')[1:]]) 

      else: break 

ответ

0

Поскольку сотрудники разделены пустым пространством, вы можете разделить данные на двойной новой линии.

with open(path, 'r') as o : 
    data = o.read().split('\n\n') 
    print(data) 
    >>> ['Name:Toby Lima\nDOB: 12/12/12\nPay:50000', 'Name:User Interface\nDOB:11/11/11\nPay:60000'] 

Впоследствии вы можете проходить через свой список и анализировать каждого сотрудника. Я бы порекомендовал использовать dict, чтобы сохранить ваши данные, чтобы получить доступ к данным позже.

employees = [] 

#iterates through your data list 
for d in data:   
    #creates a key/value pair with the employee data 
    employees.append(dict([e.split(':') for e in d.split('\n')])) 

print(employees) 
>>> [{'Name': 'Toby Lima', 'DOB': ' 12/12/12', 'Pay': '50000'}, {'Name': 'User Interface', 'DOB': '11/11/11', 'Pay': '60000'}]