Damb word frequency list
# damb word frequency list
# ввод - текстовый поток
# вывод - текстовый поток
# cat file.txt | python3 damb_wfl.py > wfl.txt
import sys
import string
import re
import collections
word_list = []
word_dict = {} # {"слово" : сколько раз оно встречается}
# прочитать строку из потока
for line in sys.stdin:
# заменить все знаки препинания на пробел (чтобы не поиметь проблем со словами, написанными через дефис)
line = re.sub(r"[!\"#$%&\'()*+\,-\./:;<=>?@[\]^_`{|}~]", " ", line)
# убрать лишние пробелы спереди/сзади
if line[0].isspace() or line[len(line)-1].isspace():
line = line.strip()
# убрать множественные пробелы
while " " in line:
line = line.replace(" ", " ")
# разбить строку на слова
word_list = line.split()
# добавить слова в dict, с обновлением статистики
for word in word_list:
if word in word_dict:
word_dict[word] += 1
else:
word_dict[word] = 1
# сортируем dict по значению (по количеству слов)
sorted_word_dict = collections.OrderedDict(sorted(word_dict.items(), key=lambda t: t[1], reverse=True))
# вывести dictionary в поток построчно
for word in sorted_word_dict:
# print(word + " - " + str(word_dict[word]))
sys.stdout.write(word + " - " + str(word_dict[word]) + "\n")