如何在Python中迭代CSV文件

时间:2015-02-06 14:02:36

标签: python csv python-3.4

如何使用csv

转换包含此类数据的CSV
['20150101','2','1']
['20150102','10','3']
['20150103','4','2']
['20150104','5','4']
['20150105','12','6']
....

可以使用基本forlen()range()函数进行迭代,同时采用其原始格式(或接近其原始格式)不使用转换为列表?

我尝试过: 我在CSV文件上尝试len(),我遇到了两个不同的错误:

TypeError: object of type '_io.TextIOWrapper' has no len() # without using csv module
TypeError: object of type '_csv.reader' has no len() # using csv module

即使我使用基本功能,如:

for i, n in enumerate(r):
    print(r[n])

我会收到这样的错误:

TypeError: '_csv.reader' object is not subscriptable

1 个答案:

答案 0 :(得分:0)

希望这会澄清它是如何运作的。如果你的代码在csv中,它将迭代每一行。因此,如果询问整行的长度(每行3个元素),每行的长度将为3。这就是您需要在特定行中指定要知道的项目的原因。它也需要''在返回长度时考虑到。

import csv

with open('test.csv', 'rb') as csvfile:
    reader = csv.reader(open("test.csv", 'rU'))

    for i in reader:
        var1 = i[0]
        var2 = i[1]
        var3 = i[2]
        print len(var1), len(var2), len(var3)

这将返回

11 3 4
11 4 4
11 3 4
11 3 4
11 4 4