2012-03-08 110 views
4

相當新的python,原諒我,如果這是一個關於學習如何使用CSV文件的基本問題。Python3 CSV模塊和字典

import csv 
theReader = csv.reader(open('filename.csv'), delimiter=',') 

for line in theReader: 
    print line 

所以我設法打開文件,並可以打印它蔓延到我的屏幕上。 但我試圖將數據捕獲到字典中。

這是例如CSV:

Name,Age,Goals,Passes,Fouls 
Ted,21,1,20,1 
Ben,28,5,14,4 

我現在需要創建一個字典與標題中作爲字典鍵(理想情況下跳過「名」),那麼字典中的值來填充的統計信息。

然後我會創建一個具有名稱另一個詞典:日期(日期我手動添加)的關鍵:值

我是正確的,即使要使用CSV mondule或者我應該做的事這通過標準文件類型,並通過逗號分割行?

回答

11

Python有一個內置的庫,可以將你的行作爲字典讀取。

它是DictReader而不是reader

http://docs.python.org/release/3.1.3/library/csv.html#csv.DictReader

利用這一點,每一行會是一本字典,而不是一個列表。

Python 3中

from csv import DictReader 
the_reader = DictReader(open('filename.csv', 'r')) 

for line_dict in the_reader: 
    print(line_dict) 
    # {'Name': 'Ted', 'Age': '21', 'Goals': '1', 'Passes': '20', 'Fouls': '1'} 

的Python 2

在Python 2,工作模式是'rb'

the_reader = DictReader(open('filename.csv', 'rb')) 
+0

+1。包括電池,再一次。 – 2012-03-08 15:29:24

+3

對於Python 2中的csv文件,應該是'open('filename.csv','rb')'。在Python 3中,模式只是「r」。此外,可以刪除'delimiter =','',因爲它是csv模塊的默認值。 – 2012-03-08 15:38:43

+0

哦這個很有用,以前沒見過這個。非常感謝您的超快速回復。 (雖然它的python2,我瞭解它的P3) 只爲其他人可能會遇到同樣的問題剛剛發現這個其他帖子以及 - http://stackoverflow.com/questions/1898305/python-csv-into-dictionary – Zenettii 2012-03-08 15:40:11