Найти в файле самую редкую букву (буква которая встречается меньше всего в тексте)

from collections import Counter

inp = 'zen.txt'
letters = 0
words = 0
lines = 0

for line in open(inp):
    lines += 1
    letters += len(line)

    pos = 'out'
    for letter in line:
        if letter != ' ' and pos == 'out':
            words += 1
            pos = 'in'
        elif letter == ' ':
            pos = 'out'

rare_letter = Counter(str(letters))
rare_letter = min(rare_letter, key=rare_letter.get)


print(f'Количество букв в файле: {letters}')
print(f'Количество слов в файле: {words}')
print(f'Количество строк в файле: {lines}')
print(f'Наиболее редкая буква: {rare_letter}')

Помогите разобраться. Не могу добиться правильного результата о поиске наиболее редкой буквы в тексте. inp = 'zen.txt' входные данные - текстовый документ с текстом.


Ответы (1 шт):

Автор решения: zomaman

Почему не ищется самая редкая буква? Вы берёте переменную letters, которая содержит число (а не символы) и метод Counter ищет самую редкую цифру из этого числа. Благодаря подсказке @insolor я подправил ваш код.

for line in open(inp):
    lines += 1
    letters += len(line)
    words += len(line.split()) # Упрощённый подсчёт слов

with open(inp) as file:
    counter = Counter(file.read())  # Самая редкая буква учитывая регистр
    # counter = Counter(file.read().lower()) # Без учёта регистра
rare_letter = min(counter, key=counter.get)
→ Ссылка