我有一段代码在字符串中找到一个单词,并显示它出现的次数,但如果我输入一个字母,例如' a'它会发现所有出现的' a'在字符串中,而不仅仅是' a'在它自己的。我目前的代码是:
for For in SentenceSplit:
#looks for the users word in the sentence
if re.search(Word, str(For)):
#if found adds one to the counter
counter=counter+1
答案 0 :(得分:1)
如果我理解你想要做的正确,
ah a banana a fruit
应该分成
ah, a, banana, a, fruit
如果您正在寻找a
,那么ah
,banana
和fruit
应该不匹配,而a
的两次出现应该。因此,您想要的结果是2
。
如果你正在寻找固定的字符串(例如userWord = "a"
),你可以简单地找到它
counter = userSentenceSplit.count(userWord)
例如
"ah a banana a fruit".split().count("a")
是2
。正如您所期望的那样,count
会计算列表中某些元素的出现次数。 (在字符串中,它会计算子字符串的出现次数,这可能会使您感到困惑。)
如果您的搜索模式更复杂并且您确实需要regexp,则可以将re.search
替换为re.match
,{{3}}仅匹配搜索字符串的开头。
如果您的搜索模式包含结尾(例如,您不希望a
与ah
匹配),请务必在$
中结束模式。
>>> re.match("a", "a")
<_sre.SRE_Match object; span=(0, 1), match='a'>
>>> re.match("a", "a longer string")
<_sre.SRE_Match object; span=(0, 1), match='a'>
>>> re.match("a$", "a")
<_sre.SRE_Match object; span=(0, 1), match='a'>
>>> re.match("a$", "a longer string") # No match
None
答案 1 :(得分:0)
您可以使用split()
将字符串拆分为单词,==
进行比较。
s = "a rat and a cat"
w = 'a'
count = 0
for useFor in s.split(' '):
if w == useFor:
count += 1
print count
输出:2
如果您喜欢匹配字符串的正则表达式,请参阅C Panda的答案。
答案 2 :(得分:0)
f=open('filename','r').read()##file with the sentences
f1=f.split('\n')
l=[]
for i in range (len(f1)):
a=f1[i].split(' ')
for wd in a:
l.append(wd)
c=0
word=raw_input('enter the word:')
for el in l:
if word==l[el]:
c+=1
if c==0:
print 'word not found'
else:
print 'word found, no of times=',c
希望这会有所帮助
答案 3 :(得分:-1)
reg = r"\b{}\b".format(word)
matches = re.findall(reg, sentence)
len(matches)