Strings

Escape-Sequenzen

Wir haben bereits gesehen, dass man einen String mit einfachen, doppelten oder dreifachen Anführungszeichen markieren kann, zum Beispiel: mein_String = '''Er sagte: "Lars' Auto ist kaputt."''' Hier ist dies nützlich, da innerhalb des Texts ein einfachen und zwei doppelte Anführungszeichen vorkommen. Diese könnten falsch interpretiert werden.

Alternativ kann man aber die Funktion den Anführungszeichen innerhalb des Texts unterdrücken, indem man ein Backslash vor diesen platziert: mein_String = 'Er sagte: "Lars\' Auto ist kaputt."' Ohne den Backslash wäre der String nach dem Wort Lars beendet. Man nennt die Zeichenfolge \' eine Escape-Sequenz. Weitere Beispiele sind in der folgenden Tabelle zu sehen:

SequenzBedeutung
\'Hochkomma / einzelnes Anführungszeichen
\"Anführungszeichen
\\Backslash
\bBackspace (Zeichen löschen)
\fSeitenumbruch
\nZeilenumbruch
\thorizontaler Tabulator
\vvertikaler Tabulator
\N{Name}Unicode Zeichen Name
\uXXXX16-Bit-Unicode-Zeichen
\uXXXXXXXX32-Bit-Unicode-Zeichen
\oooASCII-Zeichen oktal
\xhhASCII-Zeichen hexadezimal

Sehen wir uns ein paar Beispiele an:

print('Zeile 1\nZeile 2')
# Ausgabe:
# Zeile 1
# Zeile 2

print('\N{GREEK SMALL LETTER PI}')
# Ausgabe:
# π

print('\u2055')
# Ausgabe:
# ⁕

Diese Escape-Sequenzen können aber auch deaktiviert werden. Dazu muss man den String als raw deklarieren:

print(r'Zeile 1\nZeile 2')
# Ausgabe:
# Zeile 1\nZeile 2

Indizierung

Die einzelnen Zeichen eines String sind nummeriert, so dass wir auf diese oder auch eine Auswahl von ihnen zugreifen können. Die Nummerierung beginnt dabei (typisch Informatik) bei Null an. Hier ein Beispiel:

beispiel = 'abcdefghijk'
print(beispiel[0]) # Ausgabe: a
print(beispiel[1]) # Ausgabe: b
print(beispiel[-1]) # Ausgabe: k
print(beispiel[-2]) # Ausgabe: j

Wie wir sehen, können wir in eckigen Klammern die Nummer eines Zeichens angeben. Wir können dabei auch am Ende des Texts beginnen zu zählen, indem wir eine negative Zahl angeben.

Es ist auch möglich, nicht nur ein einzelnes Zeichen, sondern eines ganzen Bereich anzugeben:

beispiel = 'abcdefghijk'
print(beispiel[1:4]) # Ausgabe: bcd
print(beispiel[:3]) # Ausgabe: abc
print(beispiel[3:]) # Ausgabe: defghijk
print(beispiel[:]) # Ausgabe: abcdefghijk

Die Angabe wird also in der Form [von:bis] gemacht. Wird von weggelassen, beginnt der ausgewählte Bereich bei Null. Wird bis weggelassen, endet er ganz am Ende des Strings.

Wir können auch noch eine dritte Zahl hinzufügen. Mit dieser geben wir eine Schrittweise an. Mit 2 erreichen wir beispielsweise, dass jedes zweite Zeichen angezeigt wird, mit einer negativen Schrittweite laufen wir rückwärts durch den Text:

beispiel = 'abcdefghijk'
print(beispiel[2:8:2]) # Ausgabe: ceg
print(beispiel[::-1]) # Ausgabe: kjihgfedcba

Länge eines Strings

Mit der Funktion len können wir die Länge eines Strings abfragen:

beispiel = 'abcdefghijk'
print(len(beispiel)) # Ausgabe: 11