48. Частота слов в файле.
Условие:
Напишите программу, которая будет искать слово в тексте, которое повторяется больше всего раз.
При этом пробелы, знаки препинания и цифры должны быть проигнорированы.
Также не должен учитываться регистр, то есть символы a и A должны восприниматься как одна буква.
Имя файла для анализа пользователь должен передавать программе посредством аргумента командной строки.
Если программе не удастся открыть файл для анализа или аргументов командной строки будет слишком много, на экране должно быть отображено соответствующее сообщение об ошибке.
Можно взять файл для обработки по ссылке:
⇒ книга
Код:
from sys import argv
import re
try:
script, first = argv
buf = open(f"./{first}", "r")
text = buf.read() # прочитаем весь текст одним разом
text = text.lower()
for_del = "0123456789,.?!:;()_— «»…*"
for i in for_del: # уберём все лишние из текста
text = text.replace(i, "")
text = text.replace("\x0c", "") # уберём значок юникода
text = re.split(" |\n", text) # таким способом можно разделить строку на список, где делителей может быть несколько
text = [i for i in text if i != ""] # в нашем случае пробелов много и заранее убрать их не получится, потребовалось убрать пустые элементы списка
finish = max(text, key=text.count) # такая запись помогает найти значение списка, кот. встречается большее количество раз
except:
print("Имя файла не существует или слишком много аргументов.")
print(f"Слово <{finish}> встречается больше всего раз в тексте.")