2013-11-01 54 views
1

在Python即時試圖找到一個sentece一個字,在短短一個句子中的詞彙:尋找,而不是在一個字(蟒蛇)使用

if word in sentence: 
    number = number + 1 

這個工作正常在一個句子中找出一個字,我遇到的問題是這個代碼在其他詞中找到這個詞。例如:

word = "or" 
sentence = "Python or Java use a lot of words" 
if word in sentence: 
    number = number + 1 

數量將等於2,而不是1,因爲「或」是「巨蟒」後和「Java」面前,它也發現「或」字「字」我試着去尋找找到單詞「或」的方法,而不是在句子和另一個詞中找到它的程序。

+1

在你的例子中,數字將等於1而不是2,因爲'如果句子中的單詞是真的,只有一次。沒有任何循環,如果只有一個,你不能有數字等於2. –

+0

對於一些稍微更先進的東西,請參閱http://stackoverflow.com/q/13913530/2379410 – 2013-11-01 20:36:16

+0

@Maxime你的權利,我忘了添加一個循環。 – user2946078

回答

6
"Python or Java use a lot of words".lower().split().count('or') 

應該這樣做。

lower將所有文本轉換爲小寫,split將其轉換爲列表(空格是默認分隔符),然後count對列表進行計數。

+1

非常pythonic,做得好 – CDspace

+0

這實際上是唯一的答案,真正計數的單詞'或'的出現次數。 –

+0

非常感謝您的明確回答! – user2946078

0

可以嘗試splittingsentence第一個,因爲這樣

if word in sentence.split(" "): 

這將sentence分成字的陣列,假設所有的文字,被單個空格分隔。這相當於使用

if word in [ "Python", "or", "Java", "use", "a", "lot", "of", "words" ]: 

將檢查是否在列表中存在整個單詞,而不是在原來的sentence

1

您需要拆分句子串首先檢查使用str.split

>>> sentence = "Python or Java use a lot of words" 
>>> sentence.split() 
['Python', 'or', 'Java', 'use', 'a', 'lot', 'of', 'words'] 
>>> 

這會給你一個單詞列表。在這之後,你的代碼將工作:

>>> # I made this so I didn't get a NameError 
>>> number = 0 
>>> word = "or" 
>>> sentence = "Python or Java use a lot of words" 
>>> if word in sentence.split(): 
...  # This is the same as "number = number + 1" 
...  number += 1 
... 
>>> number 
1 
>>> 
+0

爲什麼「number + = 1」而不是簡單的'number = 1'?我看不出數字如何等於2. –