2014-02-19 1 views
1

У меня есть код python для подсчета частоты слов из текстового файла. Проблема с программой заключается в том, что она учитывает полный оборот, поэтому изменяется счетчик. Для подсчета слов я использовал отсортированный список слов. Я пытался удалить fullstop с помощьюУдалить фуллстоп, запятые, котировки из списка в Python

words = open(f, 'r').read().lower().split() 
uniqueword = sorted(set(words)) 
uniqueword = uniqueword.replace(".","") 

, но я получаю ошибку, как

AttributeError: 'list' object has no attribute 'replace' 

Любая помощь будет оценена :)

+0

Неясно, в чем именно проблема. Вы находите, что у вас есть слова с завершающей пунктуацией? Или вы обнаруживаете, что в вашем списке «слов» есть знаки пунктуации? – alastair

+0

Выход я получаю: 'Слова графа блондинок 4 блондинок. оба - одно и то же слово, единственное различие заключается в том, что он приходит где-то посредине предложения, тогда как другой приходит в конце. –

ответ

1

Вы можете обрабатывать слова, прежде чем сделать set, используя лист:

words = [word.replace(".", "") for word in words] 

Вы также можете удалить их после (uniquewords = [word.replace...]), но затем вы повторно вводите дубликаты.

Обратите внимание, что если вы хотите считать эти слова, Counter может быть более полезным:

from collections import Counter 

counts = Counter(words) 
1

Вы могли бы быть лучше с

words = re.findall(r'\w+', open(f, 'r').read().lower()) 

, который будет захватывать все строки, состоящие из одного или более «словесных символов» и игнорирует знаки препинания и пробелы.

 Смежные вопросы

  • Нет связанных вопросов^_^