2012-03-08 91 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