#python
#python
Вопрос:
я работаю над программой, которая может отображать 10 лучших ключевых слов в текстовом файле. Ниже приведен шаг, который я уже сделал:
- откройте файл
- создайте список пар
- и отсортировал пары
после сортировки моя программа получила ошибку. в приведенном ниже абзаце приведен мой код.
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))