Задача:
Написать программа, которая читает текстовый файл и производит статистический анализ символов (русский алфавит, остальные символы игнорировать), затем выводит результат в формате:
буква: частота появления
Что у меня вышло:#!/usr/bin/env python3
import string
fileName = "text.txt" # отсюда берем текст для анализа
outFileName = "result.txt" # сюда записываем результат
count = 0 # всего символов русского алфавита
dict = {} # буква:сколько раз встречалась
f = open(fileName, "rt", encoding="utf8")
for line in f:
line = str(line).upper() # переводим в одинаковый регистр
for i in range(len(line)):
if line[i] >= 'А' and line[i] <= 'Я': #проверяем на принадлежность русскому алфавиту
if line[i] in dict:
dict[line[i]] = dict[line[i]]+1
else:
dict[line[i]] = 1
count = count + 1;
f.close();
f = open(outFileName, "wt", encoding="utf8")
f.write(str(count) + "\n") # сколько всего букв
for key in dict:
f.write(str(key) + ":" + str(round(float(dict[key])/count, 3)) + "\n") # подсчет частоты
f.close()
Пример работы
вход
ААААА
ББББ
ВВВ
ABC
вывод
12
А:0.417
Б:0.333
В:0.25
Что необходимо еще:
Нужно чтобы вывод был отсортирован по частоте появления букв. Как это сделать? Насколько мне известно, словари в питоне не поддаются сортировке.