Python Suche in Strings explizit nach Wert?

Blackbenji

Lieutenant
Registriert
Nov. 2009
Beiträge
557
Hi,

ich versuche gerade in einem String nach einem "Wort" zu suchen, scheitere aber daran, wenn das "Wort" in einem anderen Wort wieder auftaucht.
Zum Beispiel: suche nach "is"

Code:
string1 = "This is Foo"
string2 = "This bar"

print "is" in string1
print "is" in string2
print "is" in string3
print string1.find("is")
print string2.find("is")
print string3.find("is")
print string1.__contains__("is")
print string2.__contains__("is")
print string3.__contains__("is")

Code:
True
True
False
2
2
-1
True
True
False

Wie kann ich erreichen, dass die Suche nach "is" im string2 kein True liefert?

Python Version 2.7.3
 
" is " wobei das Probleme aufwirft bei "Is this car yellow?" oder "This is, I think, a yellow car, right?"
Dann könntest du dich vielleicht mal ausführlicher mit Regex beschäftigen?
 
Allgemein, ohne Python-Bezug:
Das ist ein klarer Fall für regular expressions. Du musst, in dem speziellen Fall, untersuchen, ob
a) dein String mit "is" anfängt und dann wahlweise
a1) ein Leerzeichen folgt
b1) der String endet
b) vor deinem "is" ein Leerzeichen ist und danach
b1) ein Leerzeichen folgt
b2) der String endet
 
Daaron schrieb:
Allgemein, ohne Python-Bezug:
Das ist ein klarer Fall für regular expressions. Du musst, in dem speziellen Fall, untersuchen, ob
a) dein String mit "is" anfängt und dann wahlweise
a1) ein Leerzeichen folgt
b1) der String endet
b) vor deinem "is" ein Leerzeichen ist und danach
b1) ein Leerzeichen folgt
b2) der String endet

Naja, reguläre Ausdrücken bringen bereits alles für die Wortsuche mit. Hier würde man einfach eine Word-Boundary matchen: "\bis\b"
 
Wenn er noch nie mit regulären Ausdrücken gearbeitet hat, wird er sich schon noch etwas damit beschäftigen müssen. Aber stimmt schon, ein Hinweis auf die Möglichkeit der Boundaries wäre wohl ausreichend gewesen.
 
Danke euch, ich werde mich wohl doch mit RegEx auseinander setzen müssen, ein weg führt wohl in keiner Programmiersprache dran vorbei ;)
 
Zurück
Oben