2011-10-03 89 views
1

我想計算有多少行包含與我選擇的關鍵字匹配的單詞。所以我編碼這樣。如何使用python從文本中提取確切的單詞?

28   for each_keyword in keywords: 
    29    if each_keyword in text: 
    31     related_tweet_count += 1 
    32     print "related_tweet_count", related_tweet_count 
    33     print text 

它表現非常好。但它有一個問題。例如,我有一個關鍵字「流感」,那麼它不僅給「流感」,而且「影響」。爲了解決這個問題,我搜索了匹配詞的例子,並修復了這樣的代碼。

28   for each_keyword in keywords: 
    30    if re.search('\beach_keyword\b', text, re.I): 
    31     related_tweet_count += 1 
    32     print "related_tweet_count", related_tweet_count 
    33     print text 

但它不起作用。請幫助我!

回答

7

您需要將each_keyword替換爲正則表達式。目前它正在試圖匹配「each_keyword」。

28   for each_keyword in keywords: 
30    if re.search('\\b' + each_keyword + '\\b', text, re.I): 
31     related_tweet_count += 1 
32     print "related_tweet_count", related_tweet_count 
33     print text 
+0

非常感謝!在我提出這個問題之前,我嘗試過使用「if re.search('\ b'+ each_keyword +'\ b',text,re.I):」並且它不起作用。我忘記了「\\」的用法。 – ooozooo

+0

沒問題。我發現有時'\ x'會起作用,如果它不是一個有效的字符串轉義序列,但爲了保持一致性,最好總是使用'\\ x'。 – connec

0

或者做沒有正則表達式和使用更多千瓦的變化,

for keyword in keywords: 
    kw_list = [' '+keyword+',',' '+keyword+' ',' '+keyword+'.','. '+keyword] 
    for kw in kw_list: 
     if kw in text: 
      related_tweet_count += 1 
+0

謝謝!我會試試看。 – ooozooo

相關問題