Как рассчитать, сколько раз слово встречается в предложении? - PullRequest
4 голосов
/ 25 ноября 2011

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

Ответы [ 6 ]

6 голосов
/ 25 ноября 2011

Быстрый ответ:

def count_occurrences(word, sentence):
    return sentence.lower().split().count(word)

'some string.split() будет разбивать строку в пробелах (пробелы, табуляции и переводы строк) в список слов-иш. Затем ['some', 'string'].count(item) возвращает количество встреч item в списке.

Это не касается удаления знаков препинания. Вы можете сделать это, используя string.maketrans и str.translate.

# Make collection of chars to keep (don't translate them)
import string
keep = string.lowercase + string.digits + string.whitespace
table = string.maketrans(keep, keep)
delete = ''.join(set(string.printable) - set(keep))

def count_occurrences(word, sentence):
    return sentence.lower().translate(table, delete).split().count(word)

Ключевым моментом здесь является то, что мы построили строку delete, чтобы она содержала все символы ascii, кроме букв, цифр и пробелов. Тогда str.translate в этом случае берет таблицу перевода, которая не изменяет строку, но также и строку символов для удаления.

5 голосов
/ 25 ноября 2011

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

Во-первых, вот несколько инструментов, с которых можно начать, и некоторые вопросы, которые вам нужно задать себе.

Вам необходимо прочитать раздел Типы последовательностей в документации по python, потому что это ваш лучший друг для решения этой проблемы. Серьезно, прочитайте это. Как только вы прочитаете это, у вас должны появиться некоторые идеи. Например, вы можете взять длинную строку и разбить ее, используя функцию split (). Чтобы быть явным:

mystring = "This sentence is a simple sentence."
result = mystring.split()
print result
print "The total number of words is: "  + str(len(result))
print "The word 'sentence' occurs: " + str(result.count("sentence"))

Принимает входную строку и разбивает ее на любые пробелы и выдаст вам:

["This", "sentence", "is", "a", "simple", "sentence."]
The total number of words is 6
The word 'sentence' occurs: 1

Теперь обратите внимание, что у вас есть точка еще в конце второго «предложения». Это проблема, потому что «предложение» - это не то же самое, что «предложение». Если вы собираетесь просмотреть свой список и посчитать слова, вам нужно убедиться, что строки идентичны. Возможно, вам придется найти и удалить пунктуацию.

Наивный подход к этому может быть:

no_period_string = mystring.replace(".", " ")
print no_period_string

Чтобы получить бессрочное предложение:

"This sentence is a simple sentence"

Вам также необходимо решить, будет ли ваш ввод одним предложением или, возможно, абзацем текста. Если у вас много предложений на входе, вы можете найти способ разбить их на отдельные предложения и найти точки (или знаки вопроса, или восклицательные знаки, или другие знаки пунктуации, заканчивающие предложение ). Как только вы узнаете, где в строке «терминатор предложения», вы можете разбить строку вверх в этой точке или что-то в этом роде.

Вы должны попробовать это сами - надеюсь, я наделал достаточно подсказок, чтобы вы могли взглянуть на некоторые конкретные функции в документации.

1 голос
/ 04 декабря 2018

Самый простой способ:

def count_occurrences(word, sentence):
    return sentence.count(word)
0 голосов
/ 12 января 2019

Я предполагаю, что вы просто знаете о строке python и цикле for.

def count_occurences(s,word):

    count = 0
    for i in range(len(s)): 
        if s[i:i+len(word)] == word:
            count += 1    
    return count

mystring = "This sentence is a simple sentence."
myword = "sentence"
print(count_occurences(mystring,myword))

объяснение: s [i: i + len (word)]: разрезание строки s для извлечения слова, имеющего то же самоедлина со словом (аргументом) count + = 1: увеличивать счетчик при каждом совпадении.

0 голосов
/ 09 августа 2018

def check_Search_WordCount (mySearchStr, mySentence):

len_mySentence = len(mySentence)
len_Sentence_without_Find_Word = len(mySentence.replace(mySearchStr,""))
len_Remaining_Sentence = len_mySentence - len_Sentence_without_Find_Word
count = len_Remaining_Sentence/len(mySearchStr)
return (int(count))
0 голосов
/ 22 мая 2016

Вы можете сделать это так:

def countWord(word):

    numWord = 0
    for i in range(1, len(word)-1):
        if word[i-1:i+3] == 'word':
            numWord += 1
    print 'Number of times "word" occurs is:', numWord

затем вызывается строка:

countWord('wordetcetcetcetcetcetcetcword')

вернет: Number of times "word" occurs is: 2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...