2010-10-23 99 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