Как создать программу, способную отображать 10 лучших ключевых слов в текстовом файле на python

#python

#python

Вопрос:

я работаю над программой, которая может отображать 10 лучших ключевых слов в текстовом файле. Ниже приведен шаг, который я уже сделал:

  1. откройте файл
  2. создайте список пар
  3. и отсортировал пары

после сортировки моя программа получила ошибку. в приведенном ниже абзаце приведен мой код.

 filename = 'alice.txt'

try:
    with open(filename, encoding='utf-8') as f_obj:
        contents = f_obj.read()
except FileNotFoundError:
    msg = 'Sorry, the file '   filename   'does not exist. '
    print(msg)
else:
    words = contents.split()

    
wordfreq = []
for w in words:
    wordfreq.append(words.count(w))
    

pairs = str(list(zip(words, wordfreq) ))
for key , value in pairs.items():
    print("Pairsn"   str(list(zip(words, wordfreq))))
    
#print("Frequenciesn"   str(wordfreq)   "n")
#print("Pairsn"   str(list(zip(words, wordfreq))))    
#print(max(str(list(zip(words, wordfreq)))))
    


#print(max(int(list(wordfreq,words))))
  
    
#print("Listn"   str(words)   "n")

#    num_words = len(words)
#    print("The file "   filename   " has about "   str(num_words)   " words. ")
 

Комментарии:

1. Не могли бы вы подробнее описать проблему, с которой вы столкнулись? Какая ошибка у вас есть, если есть? Какой результат вы получаете? Что вы ожидаете получить?

2. Посмотрите на коллекции. Счетчик ()

Ответ №1:

Первая проблема, похоже, заключается в том, что вы выбрали неправильный тип данных для вашего слова, чтобы частота «сопряжения». Итак, я исправил это и немного изменил форму, которая должна приблизить вас к вашему ответу, пожалуйста, предоставьте более конкретную информацию о вашей проблеме.

 filename = 'alice.txt'

try:
    with open(filename, encoding='utf-8') as f_obj:
        contents = f_obj.read()
except FileNotFoundError:
    msg = 'Sorry, the file '   filename   'does not exist. '
    print(msg)
else:
    words = contents.split()

wordfreq = []
for w in words:
    wordfreq.append(words.count(w))

pairs = dict(zip(words, wordfreq))
for key, value in pairs.items():
    print(f"Pairsn {key}, {value}")
 

Ответ №2:

Если вы преобразуете свои list слова в a set , вы можете идентифицировать уникальные слова в тексте. Затем, создав a zip , вы можете использовать sorted для сортировки слов на основе частоты их появления в тексте.

 filename = 'alice.txt'

try:
    with open(filename, encoding='utf-8') as f_obj:
        contents = f_obj.read()
except FileNotFoundError:
    msg = 'Sorry, the file '   filename   'does not exist. '
    print(msg)
else:
    words = contents.split()

words_set = set(words)

wordfreq = []
for w in words_set:
    wordfreq.append(words.count(w))

pairs = zip(words_set, wordfreq)

sorted_pairs = sorted(pairs, key=lambda x:x[1], reverse=True)

for w, wq in sorted_pairs:
    print("'{}' appears {} times.".format(w, wq))