Fachkonzept - Zeichenkette
Datentyp Zeichenkette
Wir benutzen Zeichenketten, um Folgen von Zeichen als Daten zu erfassen.
Eine Zeichenkette ist eine (evtl. leere) Folge von Zeichen (aus einer vorgegebenen Zeichenmenge), die zu einer Dateneinheit zusammengefasst ist. Der Datentyp Zeichenkette beschreibt die Menge der möglichen Zeichenkette zusammen mit den Operationen, die mit Zeichenketten vorgesehen sind.
Darstellung von Zeichenketten in Python
Zeichenketten werden in Python durch Datenobjekte vom Typ str
dargestellt.
Python bietet eine Reihe von Möglichkeiten an, Zeichenketten zu erzeugen. Für kürzere Zeichenketten
benutzt man Hochkommata oder Anführungszeichen. Beide Varianten sind in Python gleichwertig.
>>> z1 = 'Hallo'
>>> z1
'Hallo'
>>> type(z1)
<class 'str'="">
>>> z2 = "Hallo"
>>> z2
'Hallo'
>>> type(z2)
<class 'str'="">
</class></class>
Beachte, dass man auch eine leere Zeichenkette bilden kann.
>>> z = ''
>>> z
Wenn man längere Texte darstellen will, so lässt sich dies in Python mit 3 aufeinanderfolgenden Anführungszeichen oder Hochkommata erledigen.
>>> text = """Dieser
... Text geht
... über mehrere
... Zeilen."""
>>> text
'Dieser\nText geht\nüber mehrere\nZeilen.'
>>> print(text)
Dieser
Text geht
über mehrere
Zeilen.
Zeichenkette als sequenzielles Datenobjekt
Eine Zeichekette ist ein sequenzielles Datenobjekt, das aus einer Folge einzelner Zeichen besteht. Die Elemente eines solchen sequenziellen Datenobjekts sind der Reihe nach durchnummeriert. Die Nummerierung beginnt dabei mit 0. Die Nummer eines Zeichens wird auch Index genannt.
Zugriff auf einzelne Zeichen einer Zeichenkette
Der Zugriff erfolgt über den Index des sequenziellen Datenobjekts.
Wenn die Variable klartext
eine Zeichenkette verwaltet, dann beschreibt der Ausdruck
klartext[i]
das Zeichen mit dem Index i
.
>>> klartext = 'HALLO'
>>> klartext[0]
'H'
>>> klartext[1]
'A'
>>> klartext[4]
'O'
Beachte, dass ein Zugriff auf ein nicht existierendes Element zu einer Fehlermeldung führt.
>>> klartext = 'HALLO'
>>> klartext[5]
Traceback (most recent call last):
...
klartext[5]
IndexError: string index out of range
Beachte auch, dass in Python nur ein lesender Zugriff auf einzelne Zeichen einer Zeichenkette möglich ist. Abändern kann man einzelne Zeichen einer Zeichenkette mit Hilfe von Zuweisungen nicht.
>>> klartext = 'HALLO'
>>> klartext[1] = 'E'
Traceback (most recent call last):
...
klartext[1] = 'E'
TypeError: 'str' object does not support item assignment
Eine veränderte Zeichenkette erhält man nur, indem man eine neue Zeichenkette mit dem
+
-Operator aufbaut.
Zugriff auf Bereiche einer Zeichenkette
In Python lassen sich auf einfache Weise auch ganze Bereiche einer Zeichenkette herausgreifen. Hier einige Beispiele:
>>> text = 'Caesar, wir kommen nach Rom!'
>>> text[8:11] # ab Index 8 .. bis .. vor Index 11
'wir'
>>> text[8:] # ab Index 8 .. bis .. zum Ende
'wir kommen nach Rom!'
>>> text[:6] # vom Anfang .. bis .. vor Index 6
'Caesar'
>>> text[:] # vom Anfang .. bis .. zum Ende
'Caesar, wir kommen nach Rom!'
>>> text[8:(-5)] # ab Index 8 .. bis .. vor letzter Index -5
'wir kommen nach'
>>> text[:(-5)] # vom Anfang .. bis .. vor letzter Index -5
'Caesar, wir kommen nach'
>>> text[(-4):] # ab letzter Index -4 .. bis .. zum Ende
'Rom!'
Aneinanderhängen von Zeichenketten
Mit dem +
-Operator kann man Zeichenketten aneinanderhängen.
>>> 'Ast' + 'erix'
'Asterix'
>>> vorname = 'Julius'
>>> nachname = 'Caesar'
>>> name = vorname + ' ' + nachname
'Julius Caesar'
Diesen +
-Operator kann man verwenden, wenn man eine neue Zeichenkette aufbauen möchte:
>>> klartext = 'HALLO'
>>> klartextNeu = ''
>>> klartextNeu = klartextNeu + klartext[0]
>>> klartextNeu = klartextNeu + 'E'
>>> klartextNeu = klartextNeu + klartext[2]
>>> klartextNeu = klartextNeu + klartext[3]
>>> klartextNeu = klartextNeu + klartext[4]
>>> klartextNeu
'HELLO'
Länge einer Zeichenkette
Die Länge einer Zeichenkette erhält man mit dem len
-Operator.
>>> klartext = 'HALLO'
>>> len(klartext)
5
>>> klartext = ''
>>> len(klartext)
0
Eine Zeichenkette durchlaufen
Wenn man alle Zeichen einer Zeichenkette verarbeiten möchte, lässt sich das wie folgt mit einer SOLANGE-Wiederholung realisieren:
# klartext = ...
i = 0
while i < len(klartext):
# verarbeite klartext[i]
i = i + 1
Hier durchläuft man die Zeichenkette über den Index der einzelnen Elemente.
In Python können sequenzielle Datenobjekte auch mit einer for
-Anweisung
durchlaufen werden:
# klartext = ...
for zeichen in klartext:
# verarbeite zeichen