2015-11-10 78 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”结尾的单词都是动词,反之亦然。但是,你最后正确使用美元会改善定义(修改)。 –