как подсчитать повторяющиеся символы в текстовом файле с помощью python

я новичок в python, и я пытаюсь сделать небольшую программу в python для подсчета повторяющихся символов в текстовом файле

вот код

import string 

def count_char(text,char):
    count = 0
    for c in text:
        if c == char:
            count +=1
        return count

filename = raw_input("Enter File name:")
with open(filename) as f:
    text=f.read()

print(count_char(text,"r"))

но он печатает вывод как

>> 0

пожалуйста, скажите мне, что не так с моим кодом?


person Goutam Reddy    schedule 17.11.2016    source источник
comment
Вот ваш ответ: stackoverflow.com/questions/14416522/   -  person Chr    schedule 17.11.2016
comment
Ваш return находится внутри цикла for, поэтому он останавливается на первом символе   -  person Patrick Haugh    schedule 17.11.2016
comment
len(текст) возвращает количество символов строки   -  person Jalo    schedule 17.11.2016
comment
Джало, цель состоит не в том, чтобы подсчитать общее количество символов, а в количестве, например. «а» или «б»   -  person derM    schedule 17.11.2016
comment
@GoutamReddy: вместо того, чтобы публиковать, кто решил эту проблему, на StackOverflow рекомендуется принять ответ. Это делается нажатием на галочку. Поскольку правильными могут быть несколько ответов, попытайтесь выяснить, какой из них лучше всего объясняет решение.   -  person derM    schedule 17.11.2016
comment
@PatrickHaugh Спасибо, сэр.   -  person Goutam Reddy    schedule 17.11.2016


Ответы (4)


Переместите свой возврат за пределы цикла for. В настоящее время он проходит только 1 итерацию.

person SarTheFirst    schedule 17.11.2016
comment
почему он не считает больше 3621? - person Goutam Reddy; 17.11.2016
comment
Возможно, вы захотите изменить его так, чтобы вместо чтения всего файла вы выполняли чтение и подсчет для каждой строки. Может дело в памяти. filename = raw_input(Введите имя файла:) count = 0 с for open(filename) as f: for line in f: count += count_char(line, 'r') print(count) - person SarTheFirst; 17.11.2016

Проблема с идентификацией в "счетчике возвратов"

def count_char(text, char):
    count = 0
    text = list(text)
    for c in text:
        if c == char:
            count += 1
    return count


filename = raw_input("Enter File name:")
with open(filename) as f:
    text = f.read()

print(count_char(text, "r"))
person eyllanesc    schedule 17.11.2016

Если вы хотите подсчитать, сколько раз данный символ появляется в строке (или файле), вы можете использовать метод подсчета:

with open(filename) as f:
    text = f.read()
    print(text.count('r'))
person FrancoisB    schedule 17.11.2016

Вы можете использовать коллекции, чтобы получить словарь всех частот символов и посмотреть, сколько раз символ повторялся.

from collections import Counter
with open(file) as f:
    c = Counter()
    for x in f:
        c += Counter(x.strip())

Пример: данные будут храниться так:

Counter({'a': 3, ' ': 3, 'c': 3, 'b': 3, 'e': 3, 'd': 3, 'g': 3, 'f': 3})
person Inconnu    schedule 17.11.2016