【问题标题】:Print out separate counter for each list at once一次打印出每个列表的单独计数器
【发布时间】:2016-03-30 11:22:53
【问题描述】:

我有 6 个月的通话详细记录,其中包含信息,例如发送了多少条短信以及它们是传出(排序)还是传入(进入)。

我想要一个告诉我类似的代码

March: 24566 #amount of outgoing sms  
April : 24667  #amount of outgoing sms  
etc etc.

问题是,当我使用计数器时,python 最终将每个月相加,并显示上个月所有的总和。

我应该如何修改计数器,使它一次只打印出每个列表的计数器?

我已经走了多远:

import csv
counter = 0

Mois = ['C:/Users/kwrk9327/Desktop/octobre12.csv','C:/Users/kwrk9327/Desktop/novembre12.csv','C:/Users/kwrk9327/Desktop/mars13.csv','C:/Users/kwrk9327/Desktop/avril13.csv','C:/Users/kwrk9327/Desktop/mai13.csv','C:/Users/kwrk9327/Desktop/juin13.csv']
for element in Mois:
    print (element)

    with open(element, 'r',encoding="utf8",errors='ignore') as csvfile:
        reader=csv.reader (csvfile, delimiter=';')

        for line in reader:
            if line[4]=='SMS'and line [1]=='Sortant':
                    counter= counter+1
    print("The result for", element, counter)

【问题讨论】:

  • 一次是什么意思?这段代码不是在counter=0 之后为每个元素执行此操作吗?

标签: python list csv counter


【解决方案1】:

您需要为每个 csv 文件重置计数器。目前你一开始只重置一次,所以只有第一个文件/月的计数是正确的

【讨论】:

    【解决方案2】:

    您必须在with 语句之后在for 语句之前将计数器归零:

    with open(element, 'r',encoding="utf8",errors='ignore') as csvfile:
        reader=csv.reader (csvfile, delimiter=';')
        counter = 0
        for line in reader
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-01
      • 1970-01-01
      • 2021-04-09
      • 2019-10-05
      • 2021-08-16
      • 2022-12-18
      • 2019-10-31
      • 1970-01-01
      相关资源
      最近更新 更多