无法for循环蟒蛇

无法for循环蟒蛇

问题描述:

进入这里是我的data.csv无法for循环蟒蛇

a,1,1-Jan-2017 
a,2,3-Jan-2017 
a,4,14-Feb-2017 
b,21,1-Dec-2016 
b,7,28-Nov-2016 

我的目标是低于打印为最终名单。格式是唯一的(FIRST_COLUMN),节数出现次数

a,3 
b,2 

下面写python脚本,但无法进入第二块打印“第二块”尽管同样的逻辑适用于以前的循环罚款。

import csv 

with open('/home/user/python/data.csv') as csvfile : 
    DataCaptured = csv.reader(csvfile,delimiter=',') 
    UniqueValues = [] 
    FinalList = [] 

    for row in DataCaptured : 
      if row[0] not in UniqueValues : 
        UniqueValues.append(row[0]) 

    print 'Unique values are:\n' + str(UniqueValues) 

    for unique in UniqueValues : 
      counter = 0 
      print 'First block',unique 
      for row in DataCaptured : 
        print 'Second block' 
        if unique == row[0] : 
          counter = int(counter)+1 
      FinalList.append(unique+','+str(counter)) 

    print 'Final list:\n' + str(FinalList) 
+0

这里是我的data.csv A,1,1-JAN-2017 一,2,3-一月至2017年 一,4,14 - 2月 - 2017年 b,21.1 - 12月-2016 b,7.28 - 11月-2016 –

+2

'DataCaptured'为读者对象。不是可重复使用的列表。首先检查文档。 –

您可以简化一点上面的程序,只有通过文件一次迭代:

import csv 

with open('/home/user/python/data.csv') as csvfile : 
    unique_values = {} 

    for row in csv.reader(csvfile, delimiter=','): 
     element = row[0] 
     if element not in unique_values: 
      unique_values[element] = 0 

     unique_values[element] += 1 

    for unique, count in unique_values.items(): 
     print('{0},{1}'.format(unique, count)) 
+0

你也可以使用[collections.Counter(https://docs.python.org/3/library/collections.html#collections.Counter) – wwii

这是因为您已经在第一次循环后读过整个文件;此时读者的迭代器中没有更多的行。使用csvfile.seek(0)第一for循环后返回到文件的开头,它会工作。