如何计算一个单词在句子中出现的次数?

12 投票
8 回答
77489 浏览
提问于 2025-04-17 07:04

我最近学习Python已经有几个月了,想知道怎么写一个函数来计算一个句子中某个词出现的次数。如果有人能给我一个一步一步的方法,我会非常感激。

8 个回答

3

最简单的方法:

def count_occurrences(word, sentence):
    return sentence.count(word)
5

wilberforce 给出了一个快速且正确的答案,而我将提供一个详细的“如何得出这个结论”的解答。

首先,这里有一些工具可以帮助你入门,还有一些你需要问自己的问题。

你需要阅读一下 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"

你还需要决定你的输入是单个句子,还是一段文本。如果你的输入包含多个句子,你可能想找到一种方法把它们拆分成单独的句子,并 找到 句号(或者问号、感叹号,或者其他结束句子的标点符号)。一旦你找到了字符串中“句子结束符”的位置,你可以在那个点 拆分 字符串,或者做其他类似的操作。

你应该自己试试看 - 希望我已经给了你足够的提示,让你去查阅文档中的一些具体函数。

11

简单回答:

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

'some string.split() 这个方法会把字符串按照空格(包括空格、制表符和换行符)分开,变成一个单词的列表。接着,['some', 'string'].count(item) 会返回这个列表中 item 出现的次数。

不过,这个方法并没有处理标点符号。如果想去掉标点,可以使用 string.maketransstr.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 使用了一个翻译表,这个表不会改变字符串,但会把指定的字符去掉。

撰写回答