Анализ текста на python

Задача: написать программу, которая принимает текст и выводит два слова: наиболее часто встречающееся и самое длинное.

TEXT = """Однажды, в студёную зимнюю пору
Я из лесу вышел; был сильный мороз.
Гляжу, поднимается медленно в гору
Лошадка, везущая хворосту воз.
И, шествуя важно, в спокойствии чинном,
Лошадку ведёт под уздцы мужичок
В больших сапогах, в полушубке овчинном,
В больших рукавицах... а сам с ноготок!
«Здорово, парнище!» — «Ступай себе мимо!» —
«Уж больно ты грозен, как я погляжу!
Откуда дровишки?» — «Из лесу, вестимо,
Отец, слышишь, рубит, а я отвожу».
(В лесу раздавался топор дровосека.) —
«А что, у отца-то большая семья?» —
«Семья-то большая, да два человека
Всего мужиков-то: отец мой да я...» —
«Так вон оно что! А как звать тебя?» — «Власом». —
«А кой тебе годик?» — «Шестой миновал...
Ну, мёртвая!» — крикнул малюточка басом,
Рванул под уздцы и быстрей зашагал...
На эту картину так солнце светило,
Ребёнок был так уморительно мал,
Как будто всё это картонное было,
Как будто бы в детский театр я попал.
Но мальчик был мальчик живой, настоящий,
И дровни, и хворост, и пегонький конь,
И снег до окошек деревни лежащий,
И зимнего солнца холодный огонь —
Всё, всё настоящее русское было,
С клеймом нелюдимой, мертвящей зимы,
Что русской душе так мучительно мило,
Что русские мысли вселяет в умы, —
Те честные мысли, которым нет доли,
Которым нет смерти —
В которых так много и злобы и боли,
В которых так много любви!"""

Мы вставили текст прямо в программу, записав ее в переменную TEXT при помощи оператора присваивания =. Поскольку переменную с текстом изменять не планируется, ее следует считать константой и записывать название заглавными буквами.
При работе с большими объемами текстовой информации текст загружается из отдельного файла. Встроенная функция open() по умолчанию открывает файл по указанному имени и пути к нему в режиме чтения. Функция возвращает объект типа file, у которого есть методы open() и close().
При возникновении проблем с кодировкой ее можно указать при открытии файла.

txtfile = open("warandpeace.txt", encoding="utf-8")
TEXT = txtfile.read()
txtfile.close()

В третьей версии языка подобная операция делается с использованием ключевых слов with и as:

with open("warandpeace.txt", encoding="utf-8") as txtfile:
    TEXT = txtfile.read()

Количество слов легко подсчитать при помощи метода split(). Количество символов – длина строки, полученной при сложении всех слов.

words = TEXT.split()
print(len(words)) # Вывести на экран количество слов
print(len("".join(words))) # Вывести на экран количество символов
wordsdict = {}
for word in words:
    word = word.lower().strip('"').strip("(").strip("!").strip("«").rstrip("...»").strip(",")
    if word not in wordsdict:
        wordsdict[word] = 1
    else:
        wordsdict[word] = wordsdict[word] + 1

wordslist = sorted(wordsdict.items(), key=lambda x: x[1], reverse=True)
print(wordslist)

longest = ""
wordsfreq = []
for word in wordsdict:
    wordsfreq.append((word, wordsdict[word]))
    if len(word) > len(longest):
        longest = word

wordsfreq.sort(key=lambda row: row[1], reverse=True)
print(wordsfreq == wordslist)

dct = {}
for word in wordsfreq:
    dct.update({word[0]: word[1]})
print(dct)

Медианное среднее

import statistics as st

TEXT = """Здесь текст для анализа.
Add text here.
"""

word_lens = []
for word in TEXT.split():
    word_lens.append(len(word))

median_val = st.median(word_lens)
mean_val = st.mean(word_lens)
print("Медианное среднее:", median_val, "Среднее:", mean_val, "Разница:", median_val - mean_val)

Ссылки