2015-11-10 111 views
-2

我試圖寫一個代碼,通過常見單詞結尾標識.txt中的動詞。如果一個單詞沒有被識別,我想用正則表達式猜測一個單詞是否可以是一個動詞,並讓用戶決定我是否正確。猜測單詞是否與正則表達式是動詞?

但是我對這部分代碼有困難。第一行有錯誤。我甚至沒有回答這個問題。如果我與'doing'交換ur'(?u)[a-z]+ing'它工作得很好。

 if word == ur'(?u)[a-z]+ing': 
      print 'Is this a verb?', word 
      usrinput = raw_input('Type yes for yes, no for no') 
      if usrinput == 'yes': 
       print 'yes' 
      elif usrinput == 'no': 
       print 'no' 
       continue 
+0

你只是比較字符串與正則表達式的相等性,而不是該正則表達式是否匹配(提示!)「字」。 – jonrsharpe

+0

爲什麼'=='會突然開始執行正則表達式匹配? –

+1

你可以使用'.endswith('。ing')'做你想要的東西,我想... –

回答

1

==操作檢查字符串平等。它不執行正則表達式匹配或任何其他類型的匹配。爲了做到這一點,你需要一個庫,如re庫。

例如:

import re 

word = raw_input('Please enter a word? ') 

verb = re.compile('[a-z]+ing$') 
if verb.match(word): 
    print 'I think it is a verb' 
else : 
    print 'I think this is NOT a verb' 

不過,若你打算做自然語言處理,我想用用Natural Language toolkit (NLTK)將更加有效部分詞性標註。

+0

這也將匹配「bazinga」或類似。我認爲你的意思是'[a-z] + $' –

+0

@NiklasB .:當然,這取決於OP如何定義動詞,因爲不是每個以「ing」結尾的單詞都是動詞,反之亦然。但是,你最後正確使用美元會改善定義(修改)。 –