Indizieren und Schneiden von Strings in Python 3

Einführung

Der Python-String-Datentyp ist eine Sequenz aus einem oder mehreren einzelnen Zeichen, die aus Buchstaben, Zahlen, Leerzeichen oder Symbolen bestehen können. Da es sich bei einer Zeichenfolge um eine Sequenz handelt, kann auf diese wie auf andere sequenzbasierte Datentypen durch Indizieren und Schneiden zugegriffen werden.

Dieses Lernprogramm führt Sie durch den Zugriff auf Zeichenfolgen durch Indizieren, Durchsuchen ihrer Zeichenfolgen und durch einige Zähl- und Zeichenlokalisierungsmethoden.

Wie Strings indiziert werden

Wie der Datentyp list mit Elementen, die einer Indexnummer entsprechen, entspricht auch jedes Zeichen einer Zeichenfolge einem Index Nummer, beginnend mit der Indexnummer 0.

Für den String "+ Sammy Shark! +" Sieht die Indexaufschlüsselung folgendermaßen aus:

S a m m y S h a r k !

0

1

2

3

4

5

6

7

8

9

10

11

Wie Sie sehen, beginnt das erste "+ S " bei Index 0, und die Zeichenfolge endet bei Index 11 mit dem Symbol "! +".

Wir bemerken auch, dass das Leerzeichen zwischen "+ Sammy " und " Shark +" auch seiner eigenen Indexnummer entspricht. In diesem Fall ist die dem Whitespace zugeordnete Indexnummer 5.

Dem Ausrufezeichen ("! +") Ist ebenfalls eine Indexnummer zugeordnet. Jedes andere Symbol oder Satzzeichen, wie z. B. " * # $" und "? +", Ist ebenfalls ein Zeichen und wird mit einer eigenen Indexnummer verknüpft.

Die Tatsache, dass jedes Zeichen in einer Python-Zeichenfolge eine entsprechende Indexnummer hat, ermöglicht uns den Zugriff auf und die Bearbeitung von Zeichenfolgen auf dieselbe Weise wie bei anderen sequentiellen Datentypen.

Zugreifen auf Zeichen durch positive Indexnummer

Indem wir auf Indexnummern verweisen, können wir eines der Zeichen in einer Zeichenfolge isolieren. Dazu setzen wir die Indexnummern in eckige Klammern. Deklarieren wir einen String, drucken ihn und rufen die Indexnummer in eckigen Klammern auf:

ss = "Sammy Shark!"
print(ss[4])
Outputy

Wenn wir auf eine bestimmte Indexnummer eines Strings verweisen, gibt Python das Zeichen zurück, das sich an dieser Position befindet. Da der Buchstabe "+ y " an der Indexnummer 4 der Zeichenfolge " ss =" Sammy Shark! "" Steht, erhalten wir beim Drucken von " ss [4] " " y +" als Ausgabe.

Mit Indexnummern können wir auf bestimmte Zeichen in einer Zeichenfolge zugreifen.

Zugreifen auf Zeichen durch negative Indexnummer

Wenn wir eine lange Zeichenfolge haben und ein Element zum Ende hin genau bestimmen möchten, können wir ab dem Ende der Zeichenfolge auch rückwärts zählen, beginnend mit der Indexnummer "+ -1 +".

Für die gleiche Zeichenfolge "+ Sammy Shark! +" Sieht die negative Indexaufschlüsselung folgendermaßen aus:

S a m m y S h a r k !

-12

-11

-10

-9

-8

-7

-6

-5

-4

-3

-2

-1

Wenn Sie negative Indexnummern verwenden, können Sie das Zeichen "+ r +" ausdrucken, indem Sie sich wie folgt auf seine Position am Index "-3" beziehen:

print(ss[-3])
Outputr

Die Verwendung negativer Indexnummern kann vorteilhaft sein, um ein einzelnes Zeichen gegen Ende einer langen Zeichenfolge zu isolieren.

Saiten schneiden

Wir können auch eine Reihe von Zeichen aus der Zeichenfolge aufrufen. Angenommen, wir möchten nur das Wort "+ Shark " drucken. Wir können dies tun, indem wir ein * Slice * erstellen, das eine Folge von Zeichen in einer Originalzeichenfolge ist. Mit Slices können wir mehrere Zeichenwerte aufrufen, indem wir einen Bereich von Indexnummern erstellen, die durch einen Doppelpunkt ` [x: y] +` getrennt sind:

print(ss[6:11])
OutputShark

Wenn Sie ein Slice erstellen, wie in + [6:11] +, beginnt das Slice mit der ersten Indexnummer (einschließlich) und endet das Slice mit der zweiten Indexnummer (ausschließlich), weshalb in unserem Beispiel über dem Bereich muss die Indexnummer stehen, die unmittelbar nach dem Ende der Zeichenfolge auftreten würde.

Beim Schneiden von Zeichenfolgen erstellen wir eine * Teilzeichenfolge *, die im Wesentlichen eine Zeichenfolge ist, die in einer anderen Zeichenfolge vorhanden ist. Wenn wir "+ ss [6:11] " aufrufen, rufen wir die Teilzeichenfolge " Shark " auf, die in der Zeichenfolge " Sammy Shark! +" Vorhanden ist.

Wenn wir eines der Enden eines Strings einschließen möchten, können wir eine der Zahlen in der Syntax + string [n: n] + weglassen. Wenn wir zum Beispiel das erste Wort der Zeichenkette "+ ss +" - "Sammy" drucken möchten, können wir dies tun, indem wir Folgendes eingeben:

print(ss[:5])
OutputSammy

Dazu haben wir in der Slice-Syntax die Indexnummer vor dem Doppelpunkt weggelassen und nur die Indexnummer nach dem Doppelpunkt eingefügt, die sich auf das Ende der Teilzeichenfolge bezieht.

Um einen Teilstring zu drucken, der in der Mitte eines Strings beginnt und bis zum Ende gedruckt wird, können Sie dies tun, indem Sie nur die Indexnummer vor dem Doppelpunkt einfügen.

print(ss[7:])
Outputhark!

Indem Sie nur die Indexnummer vor dem Doppelpunkt einfügen und die zweite Indexnummer nicht in der Syntax verwenden, wird die Teilzeichenfolge vom Zeichen der aufgerufenen Indexnummer bis zum Ende der Zeichenfolge fortgesetzt.

Sie können auch negative Indexnummern verwenden, um eine Zeichenfolge zu trennen. Wie bereits erwähnt, beginnen negative Indexnummern eines Strings bei -1 und zählen von dort herunter, bis wir den Anfang des Strings erreichen. Wenn Sie negative Indexnummern verwenden, beginnen wir mit der niedrigeren Nummer, wie sie früher in der Zeichenfolge vorkommt.

Verwenden wir zwei negative Indexnummern, um die Zeichenfolge "+ ss +" aufzuteilen:

print(ss[-4:-1])
Outputark

Die Teilzeichenfolge "ark" wird aus der Zeichenfolge "Sammy Shark!" Gedruckt, da das Zeichen "a" an der Position -4 der Indexnummer und das Zeichen "k" unmittelbar vor der Position -1 der Indexnummer auftritt.

Schrittweite beim Schneiden von Zeichenfolgen festlegen

Beim String-Slicing kann zusätzlich zu zwei Indexnummern ein dritter Parameter akzeptiert werden. Der dritte Parameter gibt den * stride * an, der angibt, wie viele Zeichen vorwärts bewegt werden sollen, nachdem das erste Zeichen aus der Zeichenfolge abgerufen wurde. Bisher haben wir den Parameter stride weggelassen, und Python verwendet standardmäßig den Wert 1, damit jedes Zeichen zwischen zwei Indexnummern abgerufen wird.

Schauen wir uns noch einmal das obige Beispiel an, das den Teilstring "Shark" ausgibt:

print(ss[6:11])
OutputShark

Wir können die gleichen Ergebnisse erzielen, indem wir einen dritten Parameter mit einem Schritt von 1 einfügen:

print(ss[6:11:1])
OutputShark

Ein Schritt von 1 nimmt also jedes Zeichen zwischen zwei Indexnummern eines Slice auf. Wenn wir den Parameter stride weglassen, wird Python standardmäßig mit 1 belegt.

Wenn wir stattdessen den Schritt erhöhen, werden wir sehen, dass Zeichen übersprungen werden:

print(ss[0:12:2])
OutputSmySak

Wenn Sie in der Python-Syntax "+ ss [0: 12: 2] +" als letzten Parameter den Schritt von 2 angeben, werden alle anderen Zeichen übersprungen. Sehen wir uns die rot gedruckten Zeichen an:

bin hr!

Beachten Sie, dass das Whitespace-Zeichen bei Indexnummer 5 ebenfalls mit einem angegebenen Schritt von 2 übersprungen wird.

Wenn wir für unseren Schrittparameter eine größere Zahl verwenden, erhalten wir eine deutlich kleinere Teilzeichenfolge:

print(ss[0:12:4])
OutputSya

Wenn Sie in der Python-Syntax "+ ss [0: 12: 4] +" als letzten Parameter die Schrittweite 4 angeben, wird nur jedes vierte Zeichen ausgegeben. Schauen wir uns noch einmal die rot gedruckten Zeichen an:

Amy Shark!

In diesem Beispiel wird auch das Leerzeichen übersprungen.

Da wir den gesamten String drucken, können wir die beiden Indexnummern weglassen und die beiden Doppelpunkte in der Syntax belassen, um das gleiche Ergebnis zu erzielen:

print(ss[::4])
OutputSya

Wenn Sie die beiden Indexnummern weglassen und die Doppelpunkte beibehalten, bleibt die gesamte Zeichenfolge innerhalb des Bereichs. Durch Hinzufügen eines letzten Parameters für die Schrittweite wird die Anzahl der zu überspringenden Zeichen angegeben.

Außerdem können Sie einen negativen numerischen Wert für die Schrittweite angeben, mit dem die ursprüngliche Zeichenfolge in umgekehrter Reihenfolge gedruckt werden kann, wenn die Schrittweite auf -1 festgelegt wird:

print(ss[::-1])
Output!krahS ymmaS

Die zwei Doppelpunkte ohne angegebenen Parameter enthalten alle Zeichen aus der ursprünglichen Zeichenfolge, ein Schritt von 1 enthält jedes Zeichen ohne Überspringen, und das Negieren dieses Schritts kehrt die Reihenfolge der Zeichen um.

Machen wir das noch einmal, aber mit einem Schritt von -2:

print(ss[::-2])
Output!rh ma
In diesem Beispiel, `+ ss [

- 2] +`, wird die gesamte ursprüngliche Zeichenfolge behandelt, da die Parameter keine Indexnummern enthalten, und die Zeichenfolge wird durch den negativen Schritt umgekehrt. Wenn wir einen Schritt von -2 haben, überspringen wir außerdem jeden anderen Buchstaben der umgekehrten Zeichenfolge:

kaSymS

In diesem Beispiel wird das Leerzeichen gedruckt.

Indem Sie den dritten Parameter der Python-Slice-Syntax angeben, geben Sie den Schritt des Teilstrings an, den Sie aus dem ursprünglichen String ziehen.

Zählmethoden

Während wir über die relevanten Indexnummern nachdenken, die Zeichen in Zeichenfolgen entsprechen, sollten Sie einige der Methoden durchgehen, die Zeichenfolgen zählen oder Indexnummern zurückgeben. Dies kann nützlich sein, um die Anzahl der Zeichen zu begrenzen, die in einem Benutzereingabeformular akzeptiert werden sollen, oder um Zeichenfolgen zu vergleichen. Wie bei anderen sequentiellen Datentypen können Zeichenfolgen mit verschiedenen Methoden gezählt werden.

Wir werden uns zuerst die Methode + len () + ansehen, mit der die Länge jedes Datentyps ermittelt werden kann, der eine geordnete oder ungeordnete Sequenz ist, einschließlich Zeichenfolgen, Listen und https://www.digitalocean.com/community / tutorials / understanding-tuples-in-python-3 [tuples] und dictionaries.

Lass uns die Länge des Strings "+ ss +" ausgeben:

print(len(ss))
Output12

Die Länge der Zeichenfolge "Sammy Shark!" Beträgt 12 Zeichen, einschließlich des Leerzeichens und des Ausrufezeichens.

Anstatt eine Variable zu verwenden, können wir auch einen String direkt an die Methode + len () + übergeben:

print(len("Let's print the length of this string."))
Output38

Die Methode + len () + zählt die Gesamtzahl der Zeichen in einer Zeichenkette.

Wenn wir zählen wollen, wie oft ein bestimmtes Zeichen oder eine Folge von Zeichen in einer Zeichenfolge auftaucht, können wir dies mit der Methode + str.count () + tun. Lass uns mit unserem String "+ ss =" Sammy Shark! "+" Arbeiten und zählen, wie oft das Zeichen "a" erscheint:

print(ss.count("a"))
Output2

Wir können nach einem anderen Charakter suchen:

print(ss.count("s"))
Output0

Obwohl der Buchstabe "S" in der Zeichenfolge enthalten ist, ist zu beachten, dass bei jedem Zeichen die Groß- und Kleinschreibung beachtet wird. Wenn wir unabhängig von der Groß- und Kleinschreibung nach allen Buchstaben in einer Zeichenfolge suchen möchten, können wir die Methode + str.lower () + verwenden, um die Zeichenfolge zuerst in Kleinbuchstaben umzuwandeln. Weitere Informationen zu dieser Methode finden Sie unter „https://www.digitalocean.com/community/tutorials/an-antroduction-to-string-methods-in-python-3#making-strings-upper-and-lower-case“ [Eine Einführung in die String-Methoden in Python 3]. “

Versuchen wir es mit + str.count () + mit einer Folge von Zeichen:

likes = "Sammy likes to swim in the ocean, likes to spin up servers, and likes to smile."
print(likes.count("likes"))
Output3

In der Zeichenfolge "+ likes +" kommt die Zeichenfolge, die "likes" entspricht, dreimal in der ursprünglichen Zeichenfolge vor.

Wir können auch feststellen, an welcher Position ein Zeichen oder eine Zeichenfolge in einer Zeichenfolge vorkommt. Wir können dies mit der Methode + str.find () + tun und sie gibt die Position des Zeichens basierend auf der Indexnummer zurück.

Wir können überprüfen, wo das erste "m" in der Zeichenfolge "+ ss +" vorkommt:

print(ss.find("m"))
Ouput2

Das erste Zeichen "m" kommt an der Indexposition 2 in der Zeichenfolge "Sammy Shark!" Vor. Wir können die Indexnummernpositionen der Zeichenfolge "+ ss +" überprüfen. Https://www.digitalocean.com/community/tutorials/how -in-Python-3-Index-und-Slice-Strings # wie-Strings-indiziert werden [oben].

Überprüfen wir, wo die erste "Gefällt mir" -Zeichenfolge in der Zeichenfolge "+ Gefällt mir +" vorkommt:

print(likes.find("likes"))
Ouput6

Die erste Instanz der Zeichenfolge "likes" beginnt an der Indexnummer 6, an der das Zeichen "+ l " der Folge " likes +" positioniert ist.

Was ist, wenn wir sehen wollen, wo die zweite Folge von „Likes“ beginnt? Wir können dies tun, indem wir einen zweiten Parameter an die Methode + str.find () + übergeben, die an einer bestimmten Indexnummer beginnt. Beginnen wir also nicht am Anfang des Strings, sondern nach der Indexnummer 9:

print(likes.find("likes", 9))
Output34

In diesem zweiten Beispiel, das bei der Indexnummer 9 beginnt, beginnt das erste Auftreten der Zeichenfolge "likes" bei der Indexnummer 34.

Zusätzlich können wir als dritten Parameter ein Ende des Bereichs angeben. Wie beim Schneiden können wir dies tun, indem wir mit einer negativen Indexnummer rückwärts zählen:

print(likes.find("likes", 40, -6))
Output64

In diesem letzten Beispiel wird nach der Position der Sequenz "likes" zwischen den Indexnummern 40 und -6 gesucht. Da der letzte eingegebene Parameter eine negative Zahl ist, wird ab dem Ende der ursprünglichen Zeichenfolge gezählt.

Die String-Methoden von + len () +, + str.count () + und + str.find () + können verwendet werden, um Länge, Anzahl von Zeichen oder Zeichenfolgen und Indexpositionen von zu bestimmen Zeichen oder Zeichenfolgen in Zeichenfolgen.

Fazit

Die Möglichkeit, bestimmte Indexnummern von Zeichenfolgen oder ein bestimmtes Segment einer Zeichenfolge aufzurufen, bietet uns mehr Flexibilität beim Arbeiten mit diesem Datentyp. Da Strings wie Listen und Tupel ein sequenzbasierter Datentyp sind, kann durch Indizieren und Schneiden auf sie zugegriffen werden.

Sie können mehr über formatting strings und https://www.digitalocean.com/community/tutorials lesen / eine-einführung-in-string-methoden-in-python-3 [string methoden], um weiter über strings zu lernen.