逐行读取csv文件

时间:2016-02-26 11:57:01

标签: python python-2.7 csv

我正在使用Python v2.7(请不要让我使用Python v3)。我有一个csv文件,其内容是这样的:

name age gender height
John 30  male   180
Kate 23  female 166
...

我使用csv模块。我尝试使用以下代码逐行读取内容:

import csv

with open("data.csv", 'r') as data_file:
     reader = csv.reader(data_file, delimiter='\t')
     # ERROR: ValueError: need more than 2 values to unpack
     for name, age, gender, height in enumerate(reader):
         print name + ',' + age + ',' + gender + ',' + height

但是我在运行时遇到错误:

ValueError: need more than 2 values to unpack

如何摆脱这个错误?

3 个答案:

答案 0 :(得分:1)

枚举的问题会返回一个元组 - 项目编号和项目本身。所以它返回两个元素,并强制它解压缩4个元素(检查https://docs.python.org/2/library/functions.html#enumerate)。 尝试将其转换为:

for index, (name, age, gender, height) in enumerate(reader)

但实际上我认为你不需要枚举函数,因为你不使用元素索引。 如果它不起作用,您只需按索引访问行,如文档中的示例所述:https://docs.python.org/2/library/csv.html#csv.reader

答案 1 :(得分:0)

您正在以错误的方式使用enumerate()。有关详细信息,请参阅此处:https://docs.python.org/2.3/whatsnew/section-enumerate.html

关于您的代码,您可以执行以下操作:

import csv

with open("data.csv", 'r') as data_file:
   reader = csv.reader(data_file, delimiter='\t')       
   for row in reader:
     print ', '.join(row)

答案 2 :(得分:0)

import csv

with open("data.csv", 'r') as data_file:
  data_file.readline() # Skip first line
  reader = csv.reader(data_file, delimiter=',')
  for name, age, gender, height in reader:
     print name + ',' + age + ',' + gender + ',' + height

产量

John, 30 , male  , 180
Kate, 23 , female, 166