Python: Prüfen ob String einen Sustring enthält, der ihm vom Anfang an enspricht?
Hey,
Es gibt in Python die Keywords 'in' und 'find'. Diese prüfen aber, ob ein String generell einen Substring enthält, der ihm entspricht:
>>> 'llo' in 'hello'
True
>>> 'world'.find('ld')
3
Gäbe es jedoch einen Weg, nur zu prüfen, ob der Substring dem String von Anfang an entspricht? In etwa so:
>>> ('water', 'wa')
True
>>> ('water', 'ter')
False
Eventuell ginge es über eine For-Schleife, aber ich wollte wissen, ob jemandem da vielleicht eine kürzere Methode einfiele.
Danke im Vorraus!
4 Antworten
>>> help(str)
Dort findest Du alles zu Strings.
Natürlich kann man sich mit slicing behelfen.
Bezüglich find() irrst Du allerdings...
>>> "bleh".startswith("bl")
True
>>> "bleh".startswith("eh")
False
>>> "bleh".find("eh")
2
>>> "bleh".find("bl")
0
>>> "bleh".find("gn")
-1
#ergo:
>>> "bleh".find("bl")==0
True
startswith() hat natürlich den Vorteil, daß es spezifischer und somit schneller ist.
Irgendwo kommt man immer an eine Situation, für die man dann selbst den notwendigen Code erstellen muss (dürfte im hier von dir genannten Fall aber einfach sein).
|
Ich nutze zum Schreiben meiner Programme vor allen ein kleines Subset von C++, das kaum mehr ist als C erweitert um das Klassenkonzept aus C++.
Eine der (von mir selbst geschriebenen) Klassen, die für jedes meiner Programme gute Dienste leistet, enthält Methoden, die ich in der Standard Library für C gesucht, dort aber nicht gefunden und deswegen selbt programmiert habe. Sie ist nun schon über 30 jahre hinweg langsam aber stetig gewachsen. Auf sie verzichten möchte ich heute auf keinen Fall.
Ein Analogon davon wirst du dir für die Programmiersprache deiner Wahl halt auch bauen müssen. Wie sonst soll man als Programmierer ständig effektiver und effizienter werden können?
meinString = 'Hallo Welt'
suche = 'Hallo'
print(meinString[:len(suche)] == suche)
Das geht mit der startswith-Methode:
"water".startswith("wat")
ergibt True
"water".startswith("ter")
ergibt False
Es gibt auch eine endswith Methode
Jein, Slicing ist halt ein universelles Werkzeug und wäre ein guter Ansatz in Ermangelung von startswith().
Vielen Dank!