我需要编写一个简单的脚本来打印单词'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?'
答案 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")