2014-08-18 1 views
-1

Я создал небольшую программу, которая учитывает цепочки в строке. Как видите, ключевые слова хранятся в txt-файле. Сегодня я понял, что если слово в строке повторяется, то счетчик ключевых слов не будет увеличивать его значение. Частично в этом случае «неправильный» - это ключевое слово в txt-файле и в переменной счетчика результата wil будет 1 не 2.Looping через строку Python в поисках ключевых слов

Как заставить это работать, повторяются ли повторяющиеся слова?

source_text = 'this is wrong. What is wrong with you?' 
source_words = source_text.split() 
count = 0  

word_list = [] 
with open('pozit.txt') as inputfile: 
    for line in inputfile: 
     word_list.append(line.strip()) 

for word in word_list: 
    if word in source_words: 
     count += 1 
+3

'' wrong'' находится в 'source_words' только один раз. Другой - «ошибочный». (Обратите внимание на точку). – hlt

ответ

2

Вы можете просто использовать .count():

with open('pozit.txt') as inputfile: 
    count = 0 
    for line in inputfile: 
     count += line.count('wrong') 

Если вы хотите только слова в лингвистическом смысле, взглянуть на NLTK-х tokenizer module.

+0

если предположить, что моя тестовая строка «неправильная xyz wrongxyz wronged», то это даст мне счет = 3, но это должно быть 1 – Vipul

+0

@Vipul. Я обновил свой ответ. – simonzack

+0

@simonzack я бы использовал NLTK, если бы это было на английском языке, на этот раз его на другом языке - только на английском языке. Ваше решение работает, если я знаю ключевое слово, которое повторяется. Но если я этого не сделаю? Например, каждый раз текст отличается от – andris