所以我几个月来一直在学习Python,并且想知道如何编写一个函数来计算一个单词出现在句子中的次数。如果有人可以请一步一步地给我这样做,我将不胜感激。
答案 0 :(得分:6)
快速回答:
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
在这种情况下采用不改变字符串的转换表,而且还要删除一串字符。
答案 1 :(得分:5)
首先,这里有一些工具可以帮助您入门,以及您需要问自己的一些问题。
您需要阅读python文档中Sequence Types上的部分,因为它是您解决此问题的最佳朋友。说真的,读一读。一旦你读完了,你应该有一些想法。例如,您可以使用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"
您还需要确定您的输入是一个句子,还是一段文字。如果您的输入中有多个句子,您可能希望找到将其分解为单个句子的方法,并找到句点(或问号,感叹号或其他结束标点符号)句子)。一旦你发现字符串中的“句子终止符”是你可能在那时分割字符串,或类似的东西。
你应该自己尝试一下 - 希望我有足够的提示让你看一下文档中的一些特定功能。
答案 2 :(得分:1)
最简单的方法:
def count_occurrences(word, sentence):
return sentence.count(word)
答案 3 :(得分:0)
你可以这样做:
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
答案 4 :(得分:0)
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))
答案 5 :(得分:0)
我假设您只了解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:匹配时增加计数器。