Grundlagen
Für die Darstellung einer Sequenz von Zeichen existiert in Python — wie auch in anderen Programmiersprachen — der Datentyp String.
Der Datentyp String wird auch als sequenzieller Datentyp bezeichnet.
Beispiele für Strings:
>>> name = "Kai"
>>> town = 'Pretoria'
>>> numbers = '123456'
Die Zeichenkette kann in doppelte oder einfache Anführungszeichen gesetzt werden. Das Weglassen der Anführungszeichen würde bei numbers
dazu führen, dass es sich bei 123456
um ein Integer handelt.
Mit der Funktion type()
lässt sich übrigens der Datentyp feststellen. Wie zu erwarten, erhalten wir mit der Rückmeldung <class 'str'>
die Information, dass es sich ein String vorliegt.
>>> numbers = '123456'
>>> type(numbers)
<class 'str'>
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 Variable 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:
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 n
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 unveränderbar.
Anders sieht es übrigens bei Listen aus. Hierbei handelt es sich ebenfalls um einen sequenziellen Datentyp, der aber veränderbar (mutable) ist.
Zuletzt aktualisiert am 18. Juli 2024