2017-05-31 86 views
-1

我想從csv文件導入。將標籤分隔的csv文件導入到詞典列表

task_name time_spent notes date task_number 

Worked on hotfrog. 45 Hotfrog started glitching so I moved on to something else. 01/25/2017 02:25 1 

falkd 3 adlskfj 01/01/2005 09:40 2 

,並把它變成一個清單,它內部的詞典看起來像這樣:`

self.example_dict_list = 

[{'task_name': 'Worked on hotfrog', 'time_spent': '45', 'notes': 'Hotfrog started glitching so I moved on to something else', 'date': '01/25/2017 02:25', 'task_number': '1'}, {'task_name': 'falkd', 'time_spent': '3', 'notes': 'adlskfj', 'date': '01/01/2005 09:40', 'task_number': '2'}] 
+0

堆棧溢出不是一個代碼寫入服務。我們很樂意提供幫助,但您希望先嚐試自己弄清楚。你試圖做什麼? –

+1

你的帖子沒有意義,「time_spent」來自哪裏? 「notes」來自哪裏? –

+0

我很抱歉我會修復它。對於肯懷特,我一直在嘗試一個小時才能完成這項工作。 – Chris

回答

1

這應該工作,我做了一個小CSV文件,它看起來就像這樣:

task_name time_spent notes date task_number 
worked on blah 45 glitching and stuff 1/1/15 2 
stuff 40 stuff happened 2/3/16 5 

然後將它轉換爲一個列表你應該這樣做:

import csv 

f = 'path_to_file.csv' 

with open(f, 'r') as fin: 
    reader = csv.reader(fin) 
    headers = reader.next() 
    dict_list = [] 
    for line in reader: 
     dict_list.append(dict(zip(headers, line))) 

dict_list 

[{'date': '1/1/15', 
    'notes': 'glitching and stuff', 
    'task_name': 'worked on blah', 
    'task_number': '2', 
    'time_spent': '45'}, 
{'date': '2/3/16', 
    'notes': 'stuff happened', 
    'task_name': 'stuff', 
    'task_number': '5', 
    'time_spent': '40'}] 
+0

感謝您的幫助。它返回這個錯誤,雖然... AttributeError:'_csv.reader'對象沒有'next'屬性 – Chris

+1

我假設你在Python 3中。將該行更改爲'headers = next(reader)' –

+0

它沒有正確返回。這是它提供的:'[{},{'task_name \ ttime_spent \ tnotes \ tdate \ ttask_number':'Worked on hotfrog。\ t45 \ tHotfrog開始出現故障,所以我轉向其他東西。\ t01/25/2017 02 :25't1'},{},{'task_name \ ttime_spent \ tnotes \ tdate \ ttask_number':'falkd \ t3 \ tadlskfj \ t01/01/2005 09:40 \ t2'},{}] ' – Chris