if abfrage mit >= 0 ?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
bricktop
User
Beiträge: 14
Registriert: Samstag 9. Oktober 2010, 20:50

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?
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
bricktop
User
Beiträge: 14
Registriert: Samstag 9. Oktober 2010, 20:50

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?
lunar

@bricktop

Code: Alles auswählen

>>> 'Hallo Welt'.find('Hallo') > 0
False
>>> 'Hallo Welt'.find('Hallo') 
0
bricktop
User
Beiträge: 14
Registriert: Samstag 9. Oktober 2010, 20:50

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?
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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
0815
User
Beiträge: 3
Registriert: Donnerstag 6. September 2012, 10:38

probier es doch mal mit

Code: Alles auswählen

import re
x="Hallo Welt"
if re.search('Welt',x): print "Gefunden;)"
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‽
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

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:
the more they change the more they stay the same
Antworten