2017-04-03 4 views
1

Ich möchte das Auftreten eines bestimmten Wortes in einem Satz finden und dann entfernen. Ich kann es tun, aber manchmal kann das Wort, das ich entfernen möchte, ein Unterwort sein. Zum Beispiel möchte ich das Wort "Wort" im Satz "Musik ist weltweit" finden/entfernen. Mein Programm wird fin/remove einen positiven Wert zurückgeben, dass es das Wort "Wort" in dem Satz fand, während es tatsächlich das Wort "weltweit" traf, und ich möchte, dass es einen negativen Wert zurückgibt. Ich bin derzeit mitFinden Sie das Auftreten eines Wortes in einem Satz

index = text.find(word)

Gibt es eine andere Möglichkeit, dieses Problem des Wortes zu vermeiden, ein Teilwort in einem Satz zu sein? Vielen Dank im Voraus!

Antwort

2

Sie können das Modul für reguläre Ausdrücke verwenden und sich auf Wortgrenzen für reguläre Ausdrücke verlassen (\b), um nur das vollständige Wort zu finden.

Da Sie versuchen, das Wort aus dem Satz zu entfernen, hier ist ein Beispiel, das alle Spiele mit einem leeren String ersetzt:

import re 

sentence = 'Music world is worldwide' 
word = 'world' 
removed = re.sub(r'\b%s\b' % word, '', sentence) 

print removed # prints "Music is worldwide" 

Wenn Sie nur die Position des ersten Auftretens finden wollen, Sie können es tun, wie folgt:

import re 

sentence = 'Music is worldwide in the world' 
word = 'world' 
match = re.search(r'\b%s\b' % word, sentence) 

if match: 
    print match.start() # prints 26 

überprüfen Sie die Dokumentation des re Modul für weitere Einzelheiten.

0

Ich dachte, um einen Raum zu dem Wort heißt die Zugabe:

word = " "+ word 
 
index = text.find(word)

aber ich frage mich, ob eine effektive und saubere Art und Weise gibt, es zu tun.

Verwandte Themen