2016-04-21 12 views
0

Ich habe Code, der aus einer Textdatei liest, und druckt jede Zeile mit einem Schlüsselwort (eingegeben von einer Eingabe). Es wird jedoch die ganze eingegebene Phrase durchsucht, nicht die Wörter selbst. Z.B. Ich werdeSo lesen Sie nur Wörter, nicht volle Sätze

gebe ich ein schnelles Auto ist

Der ganze Satz in der Datei gesucht haben, nicht nur Schlagworte, wie schnell oder Auto.

file = open("file.txt", "r") 
search= input("What to be searched? ") 
for line in file: 
    if search in line: 
     print ("found" +line) 

file.close() 

Antwort

4

Versuchen Sie folgendes:

search = input("What to be searched? ").split() 

with open("file.txt", "r") as f: 
    for line in f: 
     if any(word in line for word in search): 
      print ("found" + line) 
+1

wow, wir haben den gleichen Gedanken! – haifzhan

1

Die bisherigen Antworten behandelt Ihr unmittelbares Problem: Statt einer Zeile nach einem Wort suchen. Sie haben jedoch ein schwierigeres Problem angedeutet: Suche nach Schlüssel Worten. Ich folge, dass wenn Sie "Ich habe ein schnelles Auto" eingeben, Sie die allgemeinen Wörter ignorieren und nur auf "schnell" und "Auto" suchen möchten.

Dies ist kein triviales Problem in der Verarbeitung natürlicher Sprache (NLP). Einige Wörter sind in einigen Kontexten üblich, aber in anderen signifikant. Um das Problem zu vereinfachen, haben viele Anwendungen eine Liste von "Stopp" -Wörtern: diejenigen, die als zu trivial angesehen werden, um sie als Schlüsselwörter zu verwenden. Dies verwandelt Ihre Lösung in etwas wie diese, die @ Aperos Code ändert:

search = input("Enter search text: ").split() 
-- Remove trivial words from search list; add your own words to this. 
stop_word = ["a", "an", "the", "am", "is", "are", "have", "has"] 
search = [word not in stop_word for word in search] 

with open("file.txt", "r") as f: 
    for line in f: 
     if any(word in line for word in search): 
      print ("found" + line) 
+0

Ja, ich dachte auch an NLTK usw., ich blieb so nah wie möglich an seinem Code und wollte nicht zu viele Änderungen vornehmen. –

Verwandte Themen