2016-12-01 53 views
0

所以我有一個被格式化的東西像這樣的文件:從文本文件中的數據創建實例

名稱:託比·利馬
出生日期:12年12月12日
工資:50000

名稱:用戶界面
出生日期:11/11/11
工資:60000

所以基本上,我需要通過每行閱讀和提取相關信息,然後創建一個Employee 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'}]