计算单词出现在字符串中的次数?

时间:2014-10-07 18:15:06

标签: python string

我需要编写一个简单的脚本来打印单词'a'出现在字符串中的次数。如果我使用s.count,它会搜索字母,而不是单词。我的字符串是:

s='This is a sentence with a bunch of words. How can we count the number of words? How can we count the number of times the letter a appears? How can we count the number of times the word a appears?'

5 个答案:

答案 0 :(得分:2)

除了其他答案,初学者版本:

s = 'This is a sentence with a bunch of words. How can we count the number of words? How can we count the number of times the letter a appears? How can we count the number of times the word a appears?'
number_of_occurences = 0
for word in s.split():
  if word == 'a':
    number_of_occurences += 1
print number_of_occurences

因此,您将句子分成单词,然后对每个单词,检查它是否与您想要查找的内容相匹配,并增加一个计数器。

答案 1 :(得分:1)

另一种解决方案如下,使用re模块:

num = len(re.findall(r'\ba\b', s))

python regex syntax中,\b匹配字边界。模式字符串前面的r - 后缀将其标记为“原始”,这在此示例中是必需的。您可能希望事先编译正则表达式模式:

pattern = re.compile(r'\b{}\b'.format(word), re.I) # case insensitive
num = len(pattern.findall(s))

答案 2 :(得分:0)

一个简单的解决方案是使用过滤语句

num = len(filter(lambda x: x==a , s.split(" ")))

其中a是您要查找的字词,s是句子。如果你想让它更健壮,你也可以使用正则表达式将它设置为在任何空格,标点符号等上分割。

答案 3 :(得分:0)

循环窗口应该有效。这不是最快的方式,但它很简单。

def Find_Pattern(Text, Pattern):
    numOfPattern = 0
    for each in range(0, len(Text)-len(Pattern)+1):
       if Text[each:each+len(Pattern)] == Pattern:
           numOfPattern += 1
    return numOfPattern

Text是您的输入文字,Pattern是您要找的地方。

答案 4 :(得分:0)

就像那个一样简单

def count_word(sentence, word):
 x = 0
 for i in sentence.split():
  if i==word:
   x+=1
 return x

print count_word("tha a atedta a","a")