无法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)
答
您可以简化一点上面的程序,只有通过文件一次迭代:
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
循环后返回到文件的开头,它会工作。
这里是我的data.csv A,1,1-JAN-2017 一,2,3-一月至2017年 一,4,14 - 2月 - 2017年 b,21.1 - 12月-2016 b,7.28 - 11月-2016 –
'DataCaptured'为读者对象。不是可重复使用的列表。首先检查文档。 –