Seite 1 von 1

if abfrage mit >= 0 ?

Verfasst: Samstag 8. September 2012, 18:17
von bricktop
Hallo,

wie kommt es dass man zB in einer String Suche
schreiben muss:

if string.find("test") >= 0:
?

Denn so funktioniert es scheinbar nicht:
if string.find("test") > 0:


Ich benutze Python 2.7. Ist das ein Bug?

Re: if abfrage mit >= 0 ?

Verfasst: Samstag 8. September 2012, 18:23
von lunar
@bricktop Nein, das ist kein Bug. Es ist ziemlich offensichtlich, dass die zweite Variante nicht das gewünschte Ergebnis liefert, und warum das so ist.

Zur Prüfung, ob eine Zeichenkette in einer anderen vorkommt, gibt es in Python den "in"-Operator:

Code: Alles auswählen

>>> 'Hallo' in 'Hallo Welt'
True
>>> 'Hi' in 'Hallo Welt'
False

Re: if abfrage mit >= 0 ?

Verfasst: Samstag 8. September 2012, 18:50
von bricktop
lunar hat geschrieben:Es ist ziemlich offensichtlich, dass die zweite Variante nicht das gewünschte Ergebnis liefert
Also für mich ist es irgendwie nicht ersichtlich. Warum sollte Variante 2 denn falsch sein?

Re: if abfrage mit >= 0 ?

Verfasst: Samstag 8. September 2012, 18:58
von lunar
@bricktop

Code: Alles auswählen

>>> 'Hallo Welt'.find('Hallo') > 0
False
>>> 'Hallo Welt'.find('Hallo') 
0

Re: if abfrage mit >= 0 ?

Verfasst: Samstag 8. September 2012, 19:21
von bricktop
lunar hat geschrieben:@bricktop

Code: Alles auswählen

>>> 'Hallo Welt'.find('Hallo') 
0
Also dann gibt der Find-Befehl ein 0 zurück wenn es gefunden wurde und -1 bei keinem Fund oder wie?

Re: if abfrage mit >= 0 ?

Verfasst: Samstag 8. September 2012, 19:24
von cofi
Die Semantik von Operationen zu erraten ist ein denkbar schlechter Weg ...
Schau doch mal was die Dokumentation sagt: http://docs.python.org/library/stdtypes.html#str.find

Re: if abfrage mit >= 0 ?

Verfasst: Samstag 8. September 2012, 22:10
von 0815
probier es doch mal mit

Code: Alles auswählen

import re
x="Hallo Welt"
if re.search('Welt',x): print "Gefunden;)"

Re: if abfrage mit >= 0 ?

Verfasst: Sonntag 9. September 2012, 09:47
von BlackJack
@0815: Wie man es machen würde wurde doch gezeigt: der ``in``-Operator. Warum sollte man um eine statische Zeichenkette zu finden so etwas überdimensioniertes wie reguläre Ausdrücke bemühen‽

Re: if abfrage mit >= 0 ?

Verfasst: Sonntag 9. September 2012, 11:03
von Dav1d
BlackJack hat geschrieben:@0815: Wie man es machen würde wurde doch gezeigt: der ``in``-Operator. Warum sollte man um eine statische Zeichenkette zu finden so etwas überdimensioniertes wie reguläre Ausdrücke bemühen‽
Dann wäre die Lösung ja nicht "0815" :twisted: