2010-10-23 74 views
0

如果在该句子中存在特定单词,我想提取确切的句子。任何人都可以让我知道如何用python来做到这一点。我使用了concordance(),但它只打印单词匹配的行。使用python提取一个句子

回答

1

如果你有一个字符串中的每个句子,你可以在你的单词上使用find(),如果找到了,返回句子。否则,你可以使用正则表达式,像这样

pattern = "\.?(?P<sentence>.*?good.*?)\." 
match = re.search(pattern, yourwholetext) 
if match != None: 
    sentence = match.group("sentence") 

我还没有测试这一点,但类似的规定。

我的测试:

import re 
text = "muffins are good, cookies are bad. sauce is awesome, veggies too. fmooo mfasss, fdssaaaa." 
pattern = "\.?(?P<sentence>.*?good.*?)\." 
match = re.search(pattern, text) 
if match != None: 
    print match.group("sentence") 
+0

测试它!这是不正确的。 – pyfunc 2010-10-23 00:37:27

+0

固定。,我只是错过了?之后的第一个\。 – dutt 2010-10-23 01:00:05

0

杜特的工作做得很好回答这个。只是想补充一对夫妇的事情

import re 

text = "go directly to jail. do not cross go. do not collect $200." 
pattern = "\.(?P<sentence>.*?(go).*?)\." 
match = re.search(pattern, text) 
if match != None: 
    sentence = match.group("sentence") 

很明显,你需要在你开始之前导入的正则表达式库(进口重)。这里是什么样的正则表达式实际上没有(更多信息可在Python re library page找到)一个拆解

\. # looks for a period preceding sentence. 
(?P<sentence>...) # sets the regex captured to variable "sentence". 
.*? # selects all text (non-greedy) until the word "go". 

再次,链接到图书馆参考页是关键。

2

只是一个快速提醒:判刑实际上是一个非常复杂的事情,对于期间规则也有例外,例如“先生”或“博士”还有各种句子结尾的标点符号。但是,例外情况也有例外(如果下一个词是大写字母,并且不是专有名词,那么Dr.例如可以结束一个句子)。

如果您对此感兴趣(这是一门自然语言处理主题),您可以查看:
自然语言工具套件(nltk)punkt module

+0

谢谢@HonestAbe – Crisfole 2013-01-21 18:41:27