2011-02-10 9 views
3

J'ouvre un fichier en utilisant python pour trouver si un ensemble prédéfini de mots sont présents dans le fichier ouvert ou non. J'ai pris l'ensemble prédéfini de mots dans une liste et ouvert le fichier qui doit être testé. Maintenant, il existe une méthode pour extraire des mots en python plutôt que des lignes. C'est ce qui rend mon travail beaucoup plus facile.Extrait des mots d'un fichier

Répondre

7
import re 

def get_words_from_string(s): 
    return set(re.findall(re.compile('\w+'), s.lower())) 

def get_words_from_file(fname): 
    with open(fname, 'rb') as inf: 
     return get_words_from_string(inf.read()) 

def all_words(needle, haystack): 
    return set(needle).issubset(set(haystack)) 

def any_words(needle, haystack): 
    return set(needle).intersection(set(haystack)) 

search_words = get_words_from_string("This is my test") 
find_in = get_words_from_string("If this were my test, I is passing") 

print any_words(search_words, find_in) 

print all_words(search_words, find_in) 

retours

set(['this', 'test', 'is', 'my']) 
True 
+0

une solution parfaite ... mais si le fichier est trop large..any sûr, plus intelligent solution – nikhil

+2

(haussement) analyser la ligne de fichiers en ligne, accumulait le jeu de mots comme vous allez. –

1

Ce code montrera quels mots sont présents dans le fichier, étant donné que le mot correspond exactement, et i s n'est pas précédé ou suivi d'une ponctuation ou d'autres caractères, et est du même cas. Avec quelques ajustements mineurs, le code pourrait être rendu plus tolérant.

words = set(['hello', 'world', 'testing']) 
f  = open('testfile.txt', 'rb') 
data = set(f.read().split()) 
print words.intersection(data)