Здравствуйте, я играл с простой программой, которая читает текст и определяет ключевые слова, где заглавная буква. У меня проблема в том, что программа не удалит пунктуацию из слов, что я имею в виду, Фродо Фродо. Фродо, появляются как разные записи, а не как один и тот же. Я пытался использовать строку импорта и играть с пунктуацией, но это не сработало.
Ниже приведены мой код и текст, который я использовал с http://www.angelfire.com /rings/theroaddownloads/fotr.pdf (скопировано в текстовый документ с именем novel.txt). Спасибо еще раз
by_word = {}
with open ('novel.txt') as f:
for line in f:
for word in line.strip().split():
if word[0].isupper():
if word in by_word:
by_word[word] += 1
else:
by_word[word] = 1
by_count = []
for word in by_word:
by_count.append((by_word[word], word))
by_count.sort()
by_count.reverse()
for count, word in by_count[:100]:
print(count, word)
2 ответа
Надеюсь, что это ниже будет работать для вас, как ожидалось:
import string
exclude = set(string.punctuation)
by_word = {}
with open ('novel.txt') as f:
for line in f:
for word in line.strip().split():
if word[0].isupper():
word = ''.join(char for char in word if char not in exclude)
if word in by_word:
by_word[word] += 1
else:
by_word[word] = 1
by_count = []
for word in by_word:
by_count.append((by_word[word], word))
by_count.sort()
by_count.reverse()
for count, word in by_count[:100]:
print(count, word)
Это удалит все
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
Из word
.
Ваш код в порядке, чтобы удалить пунктуацию, разделить с помощью регулярных выражений,
for word in line.strip().split():
Можно изменить на
for word in re.split('[,.;]',line.strip()):
Где первый аргумент в []
содержит все знаки препинания. Для этого используется модуль re
, https: // docs. python.org/2/library/re.html#re.split.
Похожие вопросы
Связанные вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.