2013-08-30 3 views

Répondre

1

Si c'est ce que vous entendez:

import re 
txt="I like to eat apple. Me too. Let's go buy some apples." 
define_words = 'some apple' 
print re.findall(r"([^.]*?%s[^.]*\.)" % define_words,txt) 

Output: [" Let's go buy some apples."] 

Vous pouvez également essayer avec:

define_words = raw_input("Enter string: ") 

Vérifiez si la phrase contient les mots définis:

import re 
txt="I like to eat apple. Me too. Let's go buy some apples." 
words = 'go apples'.split(' ') 

sentences = re.findall(r"([^.]*\.)" ,txt) 
for sentence in sentences: 
    if all(word in sentence for word in words): 
     print sentence 
+0

Merci badc0re, mais j'oublié de mentionner que ces 2 mots ne doivent pas nécessairement être consécutives. Est-ce un moyen d'utiliser regex et d'obtenir le même résultat que dans la réponse ci-dessous par moliware? – Marcelo

+0

J'ai ajouté une autre solution similaire à @moliware en utilisant regex. – badc0re

0

Je pense que vous veux une réponse en utilisant nltk. Et je suppose que ces 2 mots n'ont pas besoin d'être consécutifs, n'est-ce pas?

>>> from nltk.tokenize import sent_tokenize, word_tokenize 
>>> text = 'I like to eat apple. Me too. Let's go buy some apples.' 
>>> words = ['like', 'apple'] 
>>> sentences = sent_tokenize(text) 
>>> for sentence in sentences: 
... if (all(map(lambda word: word in sentence, words))): 
...  print sentence 
... 
I like to eat apple. 
2

Ce serait simple en utilisant le paquet TextBlob avec Python sets de builtin. Fondamentalement, parcourir les phrases de votre texte et vérifier s'il existe une intersection entre l'ensemble des mots dans la phrase et vos mots de recherche.

from text.blob import TextBlob 

search_words = set(["buy", "apples"]) 
blob = TextBlob("I like to eat apple. Me too. Let's go buy some apples.") 
matches = [] 
for sentence in blob.sentences: 
    words = set(sentence.words) 
    if search_words & words: # intersection 
     matches.append(str(sentence)) 
print(matches) 
# ["Let's go buy some apples."] 

Mise à jour: Ou, plus Pythonically,

from text.blob import TextBlob 

search_words = set(["buy", "apples"]) 
blob = TextBlob("I like to eat apple. Me too. Let's go buy some apples.") 
matches = [str(s) for s in blob.sentences if search_words & set(s.words)] 
print(matches) 
# ["Let's go buy some apples."] 
Questions connexes