2010-06-26 120 views
4

我有一个我想用Python读取的逗号分隔值表。我需要做的是首先告诉Python不要跳过第一行,因为它包含标题。然后我需要告诉它将数据读入列表而不是字符串,因为我需要从数据中构建一个数组,而第一列是非整数(行标题)。如何在Python中读取csv文件时定义列标题

共有11列5行。
下面是表的格式(除了没有行空格):

col1,col2,col3,col4,col5,col6,col7,col8,col9,col10,col11 

w0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10   
w1 1, 2, 3, 4, 5, 6, 7, 8, 9, 10  
w2 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 
w3 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 

有没有办法做到这一点?任何帮助是极大的赞赏!

+0

如果['csv'模块文档](https://docs.python.org/3/library/csv.html)对您来说太长,我已经创建了[TL; DR mini文章]( http://martin-thoma.com/python-csv/)带有可复制代码。 – 2015-02-08 12:36:55

回答

26

你可以使用csv module这种事情。它将在每行中读取表示不同字段的字符串列表。

你究竟是如何想使用它取决于你如何去后处理数据,但你可能会考虑一个Reader对象(从csv.reader()功能),就可以调用next()一次拿到第一行,即标题,然后迭代for循环中的其余行。

r = csv.reader(...) 
headers = r.next() 
for fields in r: 
    # do stuff 

如果你要风把字段放入一个字典,你会使用DictReader来代替(即类将自动从第一排坐字段名,所以你可以构建它的一个在循环中使用它)。

+11

Python 3笔记:使用'next(r)' – Aprillion 2012-06-20 19:20:27