如何计算一个单词在句子中出现的次数?
我最近学习Python已经有几个月了,想知道怎么写一个函数来计算一个句子中某个词出现的次数。如果有人能给我一个一步一步的方法,我会非常感激。
8 个回答
最简单的方法:
def count_occurrences(word, sentence):
return sentence.count(word)
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"
你还需要决定你的输入是单个句子,还是一段文本。如果你的输入包含多个句子,你可能想找到一种方法把它们拆分成单独的句子,并 找到 句号(或者问号、感叹号,或者其他结束句子的标点符号)。一旦你找到了字符串中“句子结束符”的位置,你可以在那个点 拆分 字符串,或者做其他类似的操作。
你应该自己试试看 - 希望我已经给了你足够的提示,让你去查阅文档中的一些具体函数。
简单回答:
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
使用了一个翻译表,这个表不会改变字符串,但会把指定的字符去掉。