Вывести ТОП 5 повторяющихся строк в тексте из файла

Рейтинг: 0Ответов: 1Опубликовано: 11.02.2023

Доброго субботнего вечера. Вывести топ 5 пробовал через sorted и срез. Успеха - 0. Выводит всё что есть. Возможно какая-то ошибка в теле.

import re

slovo = {}
f = open('data_2.txt' ,'r')
file = f.read().lower()
pattern = re.findall(r'\b[a-z]{1,15}\b', file)
for word in pattern:
    count = slovo.get(word, 0)
    slovo[word] = count + 1
slovo_list = slovo.keys()
for words in slovo_list:
    print(f'"{words}" повторяется в тексте - {slovo[words]} раза/раз')

Ответы

▲ 1Принят

По вашему коду вы все-таки хотите найти топ-5 наиболее встречающихся слов, а не строк, в тексте файла.

Сделать это проще всего через Counter, достаточно передать ему список всех слов из файла, которые можно получить при помощи регулярного выражения, и вызвать функцию most_common():

import re
from collections import Counter

with open('data.txt') as f:
    data = f.read()
    words = re.findall(r'[\w]+', data)
    result = Counter(words)
    print(result.most_common(5))