Strings in Python

Grundlagen

Für die Darstellung einer Sequenz von Zeichen existiert in Python — wie auch in anderen Programmiersprachen — der Datentyp String (Zeichenkette).

Der Datentyp String wird auch als sequenzieller Datentyp bezeichnet.

Beispiele für Strings:

>>> name = "Kai"
>>> town = 'Pretoria'

Die Zeichenkette kann in doppelte oder einfache Anführungszeichen gesetzt werden.

Auf jedes einzelne Zeichen kann über einen Index zugegriffen werden. Das erste Zeichen hat dabei den Index 0 (und nicht 1). Betrachten wir folgendes Beispiel, bei dem der Variablen programming_language der String “Python” zugewiesen wird:

>>> programming_language = 'Python'

Mit der built-in-Funktion len() kann die Anzahl der Elemente dieses Objekts ermittelt werden:

>>> len(programming_language)
6

Dabei sind den einzelnen Zeichen folgende Indizes zugeordnet:

a string sequence in Python

Möchte man folglich auf das erste Zeichen “P” zugreifen und der Variablen first zuweisen, kann dies — mithilfe des []-Operators — folgendermaßen umgesetzt werden:

>>> first = programming_language[0]
>>> print(first)
P

Aufgrund des Umstandes, dass die Index-Zählung bei 0 beginnt, ist folgendes nicht möglich:

>>> last = len(programming_language)
>>> print(programming_language[last])
Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    print(programming_language[last])
IndexError: string index out of range

Denn die — mit len() — ermittelte Anzahl ist 6. Das letzte Element hat aber den Index 5. Und dies erklärt dann auch den IndexError: “string index out of range”.

Um auf das letzte Element zugreifen zu können, muss stattdessen “-1” verwendet werden:

>>> print(programming_language[-1])
n

Dementsprechend könnte auf das vorletzte Element mit [-2] zugegriffen werden.

>>> print(programming_language[-2])
o

String-Segmente

Neben der Möglichkeit auf ein einzelnes Element zuzugreifen, kann man auch ein Segment von Elementen wählen. Dies wird als slicing bezeichnet (da ein Segment einer Zeichenkette als slice bezeichnet wird). Auch hier kommt wieder der []-Operator zur Anwendung. Die ersten beiden Buchstaben von “Python” ließen sich der Variablen s folgendermaßen zuweisen:

>>> s = programming_language[0:2]
>>> print(s)
Py

Die Angabe des Index 0 kann auch weggelassen werden:

>>> s = programming_language[:2]
Py

Möchte man die letzten beiden Zeichen zuweisen, kann dementsprechend

>>> s = programming_language[-2:]
on

verwendet werden. Oder man geht den umgekehrten Wege und schreibt:

>>> s = programming_language[:4]
on

Das Prinzip sollte damit klar geworden sein. Bleibt noch die Angabe einer optionalen Schrittweite, was ich mit folgendem Beispiel verdeutlichen möchte:

>>> t = "Karlsruhe"
>>> t[::2]
'Krsue'

Hier wird durch die Angabe von 2 — beginnend mit dem ersten Zeichen — nur jedes zweite Zeichen zugewiesen bzw. Immer ein Zeichen ausgelassen. Falls man beim zweiten Zeichen beginnen möchte, müsste man dementsprechend folgenden Code verwenden:

>>> t[1::2]
'alrh'

Einen String durchlaufen

Für eine Iteration kann zum Beispiel die for-Schleife genutzt werden:

>>> for i in programming_language:
    print(i)
P
y
t
h
o
n

Möglich ist auch die Verwendung einer while-Schleife:

>>> p = "Python"
>>> index = 0
>>> while index < len(p):
    letter = p[index]
    print(letter)
    index += 1
P
y
t
h
o
n

Ein String ist unveränderbar

Da ein String nicht veränderbar ist — ein String ist immutable — führt folgender Code zu einer Fehlermeldung:

>>> programming_language = "Python"
>>> programming_language[0] = "H"
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    programming_language[0] = "H"
TypeError: 'str' object does not support item assignment

Das Zeichen “P” kann nicht durch ein “H” ausgetauscht werden. Dies resultiert in einem TypeError.

Der Datentyp String ist un­ver­än­der­bar.

Anders sieht es übrigens bei Listen aus. Hierbei handelt es sich ebenfalls um einen sequenziellen Datentyp, der aber veränderbar (mutable) ist.