2017-10-15 89 views
1

我有一個任務來計算來自多個文本文件的符號。我即將完成,但面臨一個問題。以下是我的n我想總結commaCount的值。我把命令total = sum(commacount)但它顯示錯誤面對錯誤TypeError:總計數時'int'對象不可迭代

total = sum(commaCount) 
TypeError: 'int' object is not iterable 

這裏是我的代碼:

import glob 

def stats(): 

    commaCount = 0 

    path = 'D:/Stiudies/Data/female/*.txt' 
    inf = glob.glob(path) 

    for name in inf: 
     with open(name, 'r', encoding="utf8") as input_file: 
      for line in input_file: 
       for char in line: 
        if char == ',': 
         commaCount += 1 

         total = sum(commaCount) 

      print(commaCount) 

stats() 

回答

0

使用計數功能:

a = "hi, hello, good by, , ," 

print(a.count(",")) 

它會告訴你:

但對於你的原代碼:

path = 'D:/Stiudies/Data/female/*.txt' 
inf = glob.glob(path) 

buffer_commas = 0 

for name in inf: 
    with open(name, 'r', encoding="utf8") as input_file: 
     raw_data = input_file.read() 
     buffer_commas = buffer_commas + raw.count(",") 

print(buffer_commas) 
+0

謝謝你的幫助代碼工作正常。我也想統計大寫字母。請幫助我。謝謝。 –

+0

@MuhammadHafizTahir:使用print(sum(1(對於your_string中的c,如果c.isupper())) – DRPK

1

錯誤來形成內置sum功能需要接收一個說法,有點像一個列表的事實數字(「可迭代」),它將彙總在一起。在你的情況下,你給它commaCount,這是一個單一的數字(不可迭代)。

但是,通過使用:

commaCount += 1

你已經總結了所有的一切文件的逗號的,所以沒有理由這樣做的另一個sum。我想你可以刪除那一行。這樣

1

下面的代碼有助於查找號碼','每個文件和總共文件列表

import glob 
path = 'D:\Stiudies\Data\female\*.txt' 
inf = glob.glob(path) 
commaCount = 0 
for name in inf: 
    with open(name, 'r') as input_file: 
     count += input_file.read().count(',') 
     print "Count:{}\t for file:{}:".format(count,name) 
    commaCount +=count 
print "Total count:", commaCount 
+0

請注意,您當前的答案需要python 3的一些適配。 'print'和'print()'。 – moggi

+0

是的,你是對的......爲2.7編寫的代碼 – Gadi

相關問題