Python für Anfänger

Einführung in Strings II

20. August 2019 von Michael Lossagk , 14 Min  • 
Einführung in Strings II

1. Einleitung


Ein wichtiger Teil beim Programmieren ist die Arbeit mit Zeichenketten, in Englisch Strings genannt. Hierfür ist Python besonders geeignet, da der Umgang mit Strings in Python sehr simpel ist.

In diesem Tutorial möchte ich Dir einige der Möglichkeiten zeigen, die Python mitbringt, um mit Zeichenketten zu arbeiten.

Damit Du den größten Lerneffekt hast, empfehle ich Dir die Beispiele abzutippen und nicht zu kopieren und einzufügen. Somit kannst Du das gelernte besser verarbeiten und in späteren Situationen einfacher abrufen.

Dies ist bereits der zweite Teil zum Thema Einführung in Strings in Python. Den ersten Teil findest Du hier.

2. Strings in Python


Für die Beispiele nutze ich die interaktive Shell von Python:

$ python3
Python 3.6.8 (default, May  2 2019, 20:40:44)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

Wir nutzen den folgenden Beispielsatz:

>>> example = "Coding is fun"

2.1 Slicing


Im letzten Abschnitt des vorangegangenen Posts haben wir gelernt wie man einzelne Buchstaben aus einem String ansprechen kann. Soll das Ergebnis jedoch aus mehreren Buchstaben bestehen, so müssen wir uns dem Slicing bedienen. Ein solches Ergebnis wird Teilstring oder auch Substring genannt.

Im folgenden Code Beispiel werden wir uns nur das erste Wort aus unserem Beispielsatz zurückgeben lassen:

>>> example[0:6] # inclusive 0, exclusive 6
'Coding'

Um das gewünschte Ergebnis zu erhalten, müssen wir in den eckigen Klammern die Ziffer der ersten Position gefolgt von der Ziffer der letzten Position, getrennt Durch :, einfügen. Die Syntax bedeutet das Folgende:

Gebe mir den Teilstring des Satzes example von der Position 0 inklusive bis zur Position 6 exklusive.

Um das zu verdeutlichen, schauen wir uns noch einmal an was example[0] und example[6] für Werte zurückgeben:

>>> example[0]
'C'
>>> example[6]
' '

Wie wir sehen gibt example[0] das C als Ergebnis zurück und example[6] gibt ein Leerzeichen ' ' zurück. Die soll noch einmal verdeutlichen, dass der erste Wert example[0] inklusive und der letzte Wert example[6] exklusive ist. Das ist auch der Grund, warum wir im Beispiel zuvor (example[0:6]) kein Leerzeichen als letzten Wert erhalten, sondern das g.

Dieses Verhalten ist interessant zu beobachten, wenn wir folgendes eintippen:

>>> example[0:0]
''

Man hätte erwarten können, dass wir den ersten Buchstaben zurückgeliefert bekommen, ähnlich wie beim Indexing, wenn wir lediglich example[0] = C angegeben hätte. Dies ist allerdings nicht der Fall. Wir bekommen hingegen einen leeren String zurückgeliefert ''.

Achtung
Das Ergebnis `example[0:0] = ''` unterscheidet sich vom Ergebnis `example[6] = ' '`. Das erste Ergebnis liefert einen leeren String zurück, wohingegen das zweite Ergebnis ein Leerzeichen als Ergebnis ausgibt.

Natürlich kann man beim Slicing auch Substrings mitten im Satz ausgeben lassen:

>>> example[7:9]
'is'
>>> example[4:11]
'ng is f'

Es ist interessant zu wissen, dass beim Slicing der 2. Parameter auch größer sein kann als die Anzahl der Zeichen im Satz. Wenn wir beim Indexing hingegen eine Zahl angegeben haben, die größer ist als die Anzahl der Zeichen des Satzes, bekommen wir einen Indexfehler ausgegeben. Allerdings ist dies beim Slicing nicht der Fall.

>>> example[3:4543] # the second parameter is much larger than the actual length of the sentence
'ing is fun'

Es ist ausreichend, wenn man beim Slicing nur eine Ziffer als Parameter übergibt. Wenn beispielsweise nur der zweite Parameter angegeben wird dann bedeutet das Folgendes:

Alles vom Beginn des Satzes ausgeben bis exklusive zur Ziffer.

Wir können uns das erste Wort des Satzes also auch auf folgende Weise ausgeben lassen:

>>> example[:6]
'Coding'
>>> example[0:6] # inclusive 0, exclusive 6
'Coding'

Ebenso können wir beim Slicing auch nur den ersten Parameter einfügen. Das bedeutet analog zur anderen Schreibweise, dass wir alles ab dem Parameter bis zum Ende des Satzes ausgeben.

>>> example[7:]
'is fun'

Ebenso können wir beim Slicing auch mit negativen Parametern arbeiten:

>>> example[-6:]
'is fun'

Das letzte Beispiel liest sich folgendermaßen:

Fange beim sechtstletzten Buchstaben an und gehe bis zum Ende des Satzes.

Etwas komplizierter wird es, wenn wir mit zwei negativen Parametern arbeiten.

>>> example[-6:-1]
'is fu'

Hier lassen wir uns den Substring, angefangen vom sechtstletzten bis zum vorletzten Buchstaben, ausgeben.

Wir können sogar positive und negative Parameter beim Slicing mischen, allerdings muss man hier wirklich aufpassen, da dies sehr schnell kompliziert werden kann.

>>> example[-6:9]
'is'

Beim letzten Beispiel lassen wir uns den Substring vom sechtstletzten Buchstaben bis zum neunten Buchstaben ausgeben.

Allerdings müssen wir bei diesem Beispiel aufpassen. Wenn wir vom sechtstletzten bis zum vierten Buchstaben gehen wollen, bekommen wir ein leeres Ergebnis geliefert. Das liegt daran, dass die sechtstletzte Position weiter vorne im String ist (example[-6] = 'i', Coding is fun) als die vierte Position im String (example[4] = 'n', Coding is fun).

>>> example[-6:4]
'' # empty

Wir können natürlich auch mit zwei negativen Parametern arbeiten. Hierbei müssen wir aber erneut darauf achten, dass der zweite negative Parameter einen Buchstaben indiziert der weiter hinten im Satz ist als der erste negative Parameter. Dies ist analog zum vorangegangenen Beispiel zu beachten und stellt eine typische Fehlerquelle dar.

>>> example[-6:-7]
'' # empty
>>> example[-6:-4]
'is'

Um den Abschnitt Slicing abzuschließen hier noch die Tabelle mit den Indizes der Buchstaben. Diese Tabelle hilft uns bei der Veranschaulichung der Indizes. Somit wird die Funktionsweise vom Slicing einfacher verständlich.

C o d i n g   i s   f u n
0 1 2 3 4 5 6 7 8 9 10 11 12
-13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1

2.2 Unveränderbarkeit


Strings sind in Python unveränderbar (englisch: immutable). Das bedeutet, sobald sie einmal erstellt wurden können sie nicht mehr verändert werden. Das bedeutet also, wenn man einen String verändern möchte, so muss man einen neuen String erstellen. Wir möchten in unserem Beispielsatz den ersten Buchstaben (Großbuchstaben) gegen den gleichen Buchstaben in kleingeschrieben austauschen.

>>> example[0] = 'c'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment

Wie wir sehen lässt Python das nicht zu. Wir bekommen einen TypeError ausgegeben mit dem Hinweis, dass das String object in Python keine Zuweisung zulässt 'str' object does not support item assignment.

Wenn wir also einen Satz in Python ändern wollen, müssen wir anders vorgehen. Eine Möglichkeit dies zu tun ist einen neuen Satz mit einem kleinem c zu beginnen gefolgt von einem Substring des Beispielsatzes ohne den ersten Großbuchstaben. In Verbindung mit Stringkonkatenation kommen wir zum folgenden Ergebnis:

>>> 'c' + example[1:]
'coding is fun'

Wir konnten zwar den alten Satz nicht überschreiben allerdings haben wir mithilfe des alten Satzes auf einfache Weise einen neuen Satz erstellen können. Wir können das Ergebnis in einer neuen Variable speichern.

>>> fancyexample = 'c' + example[1:]
>>> fancyexample
'coding is fun'

Des Weiteren können wir alle Funktionen, die wir zuvor kennengelernt haben, nutzen um einen neuen Satz zu erstellen. Somit können wir natürlich auch einen String ans Ende dranhängen:

>>> example[:10] + 'really fun'
'Coding is really fun'

Wir können auch ein Wort im String gegen ein anderen austauschen:

>>> example[0:6] + " can be super " + example[10:]
'Coding can be super fun'

Wir sollten uns also merken, dass Strings in Python nicht verändert werden können. Allerdings können wir mit einfachen Mitteln den ursprünglichen String nutzen, um neue Strings zu erzeugen.

2.3 Länge eines Strings


In Python können wir uns mit der eingebauten Funktion len() die Länge eines Strings ausgeben lassen. Hierfür übergeben wir einfach den Namen der Variable als Parameter in die Funktion.

>>> len(example)
13

Die Ausgabe bestätigt uns, dass unser Beispielsatz eine Länge von 13 Zeichen hat.

Wir können die len() Funktion auch in Zusammenhang mit Indexing und Slicing benutzen:

>>> example[7:len(example)]
'is fun'

In diesem Beispiel nutzen wir len(example) um die letzte Stelle des Strings zu ermitteln. Wir lassen uns den Teilstring ab Index 7 bis zum Ende des Satzes (=len(example)) ausgeben.

Das Beispiel funktioniert allerdings nur, da die Angabe von größeren Indices als der Zahl der Zeichen des Strings beim Slicing erlaubt ist. Zudem sollten wir uns in Erinnerung rufen, dass beim Slicing ein Substring ausgegeben wird, bei dem der Wert des zweiten Parameters (entspricht der Position im String) exklusiv ist und daher nicht ausgegeben wird.

Daher muss man bei diesem Beispiel aufpassen, denn len(example) gibt uns die Länge des Beispielstrings zurück (= 13) und nicht den letzten Index (= 12).

Daraus folgt, dass wenn wir den letzten Buchstaben des Satzes per Indexing ausgegeben haben möchten, müssen wir von der Länge unseres Satzes Eins abziehen.

>>> example[len(example)-1]
'n'

Wenn wir lediglich die Länge als Index nutzen, so bekommen wir erneut einen Indexfehler ausgegeben:

>>> example[len(example)]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: string index out of range

Dies ist zu erwarten, da die Indizes in unserem Beispielsatz nur von 0 bis 12 gehen. Daher bekommen wir bei dem Beispiel example[len(example)], wobei len(example) = 13, einen Indexfehler, da der Index 13 in unserem Satz nicht definiert ist.

3. Probiere es selbst aus


Du kannst die Beispiele hier direkt nachvollziehen:

Falls Du Google Chrome nutzt und das Widget nicht korrekt angezeigt wird, musst Du Cookies von Drittanbietern erlauben oder einen anderen Browser verwenden.

4. Typische Prüfungsfragen


Du solltest nun in der Lage sein die folgenden Fragen beantworten zu können. Dies sind unter anderem auch typische Fragen die in Klausuren oder Prüfungen gestellt werden können.

  • Warum führt der folgende Befehl zu einem Fehler?
example = "Coding is fun"
example[0] = 'c'
  • Wie kann man sich die Länge eines Strings ausgeben lassen?
  • Wie kann man sich den letzten Buchstaben eines Strings ausgeben lassen?
  • Wie kann man sich den ersten Buchstaben eines Strings ausgeben lassen?
  • Was versteht man unter Indexing?
  • Was versteht man unter Slicing?
  • Verwendet man für Strings einfache Anführungszeichen oder doppelte Anführungszeichen?
  • Wie bricht man eine Zeile in einem String um?
  • Wie verbindet man Strings miteinander?
  • Wie kann man sich einen Teilstring von einem String ausgeben lassen?

5. Zusammenfassung


In diesem und im vorangegangen Tutorial habe ich Dir Strings in Python vorgestellt. Du kennst nun die grundlegenden Möglichkeiten um mit Strings arbeiten zu können und Du hast gelernt, wie man Strings modifizieren kann.

Hierbei haben wir gelernt

  • Was Steuerzeichen sind.
  • Wie man sich mehrzeilige Strings ausgeben lassen kann.
  • Wie man Strings miteinander verbindet.
  • Wie man einzelne Zeichen eines Strings per Indexing ausgeben kann.
  • Wie man einen Substring per Slicing ausgeben kann.
  • Wie man die Länge eines Strings ausgeben kann.
  • Dass Strings unveränderlich sind.

Code Beispiele zum Thema Python findest Du in meinem GitLab Repository und bei repl.it. Falls Du weitere Informationen zum Thema Python und Programmieren erfahren möchtest, kann ich Dir dieses Buch empfehlen.

Wenn Dir der Beitrag gefallen hat, dann würde ich mich über ein Abonnement bei YouTube und Instagram freuen.

Wenn Du Dir weitere Tutorials anschauen möchtest, kannst Du diese in meinem Blog finden.

Abonniere auch meinen Newsletter, um auf dem neusten Stand zu bleiben und über neue Einträge und Videos als Erster zu erfahren.

Falls Dir noch Dinge unklar sind und Du Fragen oder Anregungen hast, dann schreibe mir eine Nachricht oder einen Kommentar.


Michael Lossagk
Michael Lossagk
Coding Enthusiast
Founder @ TechDiffuse

Vielleicht gefällt dir auch


Share this: