在迭代之外使用计数器,忽略列表中的空行

时间:2017-01-10 11:48:56

标签: python list iteration counter

我正在寻找一种在循环外使用计数器的方法。如在此示例中,想法是从列表中打印行数,忽略空行。到目前为止,我认为我正在以错误的方式使用计数器,因为它还没有计算空行。

import csv
with open('data.csv', 'rb') as f:
    reader2 = csv.reader(f)
    reader2.next()
    linecount = len(zip(*reader2)[0])
    f.seek(0)
    reader = csv.reader(f)
    reader.next()
    counter = []
    print(linecount)
    print(type(str(counter)))
    for row in reader:
    if not row[0]: #avoid empty lines
        counter += 1
            continue
    print row
    print (int(linecount)-len(counter))

1 个答案:

答案 0 :(得分:2)

如果您只想计算行数,为什么还要烦扰CSV?您所需要的只是:

with open('/tmp/uni.py','r') as f:
    empty = 0
    nonempty = 1
    for line in f:
        if line.strip():
            nonempty +=1
        else :
            empty +=1

print empty, nonempty

这可以在更少的代码行中完成,但为了清楚起见,我这样做了。