Strings sind Zeichenketten – also einfache Texte. Wir erkennen sie durch Anführungszeichen um den Text herum. Dabei können wir sowohl doppelte Anführungsstriche als auch einfache benutzen.

Manchmal wollen wir einfache Texte oder einzelne Wörter in Variablen packen. Der Datentyp für Texte nennt sich String. Etwas gewöhnungsbedürftig, aber man klingt zumindest ein wenig mach Nerd, wenn man das anstelle von Text sagt.

Um einen String festzulegen, umgibt man den Text, den man haben möchte einfach mit einfachen oder doppelten Anführungsstrichen.

variable = 'Ich bin ein String!'
variable = "Ich auch!" 

Unterschied zwischen doppelten und einfachen Anführungszeichen

Wieso kann man sowohl doppelten als auch einfache Anführungsstriche benutzen? Manchmal haben wir Fälle, in denen Anführungsstriche zum Text gehören. Wenn wir einfache Anführungsstriche in ‚Wie geht’s?‘ verwenden, würde der String „Wie geht“ lauten und nach dem Fragezeichen ein neuer String beginnen. Um dieses Problem zu umgehen, nimmt man den Typ von Anführungsstrichen, der nicht im Text gegeben ist. Mit doppelten Anführungsstrichen, würden wir „Wie geht‘s“ ausgeben können.

falsch = 'Wie geht's?'
richtig = "Wie geht's?" 

Umgekehrt können wir auch „Zitate“ einfügen.

zitat = "Er sagte: "Diese Variable kann für Probleme sorgen""
zitat2 = 'Sie antwortete: "Diese hier wird klappen"' 

Vorsicht: Die deutschen Anführungszeichen oben und unten („“) definieren keine Strings. Beim Kopieren von vorformatierten Texten kann das für Probleme sorgen. Achte also darauf, dass du sie mit Kodierungszeichen schreibst via Shift + 2 bzw. als „Apostroph“ via Shift + #.

Strings zusammenfügen

Wir können Zeichenketten aneinanderhängen, indem wir zwischen zwei Strings ein Plus setzen. Also ähnlich wie bei Mathe:

„Baby“ + „Hund“ = „BabyHund“. Mit Wortvektoren kann man daraus „Welpe“ entstehen lassen, aber das ist ein etwas fortgeschritteneres Thema.

Ein praktisches Beispiel ist die Anwendung in Formularen. Wir erstellen zwei Felder zum Ausfüllen: Vor- und Nachname:

vorname = input("Bitte den Vornamen angeben")
nachname = input("Bitte den Nachnamen angeben")
print("Ihr Name lautet: " + vorname + " " + nachname)


# > Eingabe: Max
# > Eingabe: Mustermann
### Output:
# Ihr Name lautet: Max Mustermann 

Sequenzen aus Strings filtern

Innerhalb von Strings kann man auch einzelne Zeichen oder Sequenzen heraussuchen. Möchten wir zum Beispiel die Telefonnummer ohne die Vorwahl (+49) rausfiltern, müssen wir abzählen, wann die Telefonnummer wirklich beginnt. Beim Programmieren fängt man allerdings an mit 0 zu zählen. Das erste Zeichen ist also die 0, das zweite die 1 usw.

Als Beispiel schneiden wir uns Telefonnummern zurecht. Dafür wollen wir die Landesvorwahl (+49) mit einer 0 austauschen. Dafür zählen wir also die Zeichen ab bis zur geschlossenen Klammer: ( = 0. Zeichen | + = 1. Zeichen | 4 = 2. Zeichen | 9 = 3. Zeichen | ) = 4. Zeichen. 

Daher müssen wir den String ab der fünften Stelle beginnen. Diese geben wir aus, indem wir nach dem String eine eckige Klammer schreiben und die Zahl 5 einsetzen:

telnr = "(+49)17612341234"
print(telnr[5])

### Output:
# 1 

Möchten wir alle Werte nach der dritten Stelle auch ausgeben, setzen wir innerhalb der eckigen Klammer nach der 5 einen Doppelpunkt.

telnr = "(+49)17612341234"
print(telnr[5:])

### Output:
# 17612341234 

Vorne muss also nur noch eine 0 ran. Jetzt muss man aufpassen, da die 0 ein Integer ist und man Integer mit Strings nicht so einfach „addieren“ kann. Vorher muss man die 0 als String umwandeln. In diesem Fall einfach über Anführungszeichen. In Fällen von Variablen müssen wir die str()-Funktion verwenden:

telnr = "(+49)17612341234"
telnr_kurz = telnr[5:]
telnr_neu = "0" + telnr_kurz
print(telnr_neu)
# oder
integer_null = 0
telnr_neu2 = str(integer_null) + telnr_kurz
print(telnr_neu2)

### Output:
# 017612341234
# 017612341234 

Escape Character

Leider erkennen Strings keine normalen Zeilenumbrüche. Wenn wir also einen Absatz setzen, wird der String je nach Programm entweder ohne Zeilenumbruch ausgegeben, oder wir erhalten eine Fehlermeldung. Dafür gibt es in Python sogenannte Escape Character. Das sind Buchstaben hinter einem Backslash ( \ ) – Windows Tastatur [Alt Gr + ß], Mac Tastatur [Shift + Alt + 7] – welche innerhalb eines Strings für unterschiedliche Effekte sorgen. 

Zeilenumbrüche in Strings

Zeilenumbrüche erstellt man mit dem Escape Character \n.

zeilenumbrueche = "Der String\nhat alle\nzwei Wörter\neinen Absatz "
print(zeilenumbrueche)

### Output:
# Der String
# hat alle
# zwei Wörter
# einen Absatz 

Tabulator (Tab) in Strings

Die Tab Taste zum Vorrücken von Texten simuliert man mit dem Escape Character \t. Es entspricht vier Leerzeichen in Python.

print("1\t2\t3\t4")

### Output:
# 1    2    3    4 

Ausnahmezeichen in Strings

Du hast einen Dateipfad kopiert und kriegst eine Fehlermeldung? Häufig liegt das daran, dass die Pfade mit Backslashes (\) statt einem regulären Slash (/) geschrieben werden. Da Backslashes Einleitungen für Escape Character sind, werden aus C:\nutzer\thanos das \n und\t erkannt und mit einem Zeilenumbruch bzw. Tabulator damit ersetzt.

Um dem zu entgehen, benutzt man Backslashes vor sämtlichen Symbolen, die in Python irgendetwas einleiten – in diesem Fall ein Backslash vorm Backslash:

pfad = "C:\nutzer\thanos"
print(pfad)

pfad2 = "c:\\nutzer\\thanos"
print(pfad2)

### Output
# C:
# utzer    hanos

# c:\nutzer\thanos 

Das gilt auch für andere Zeichen wie z.B. Anführungszeichen für Strings:

falsch = "An " und ' erkennt man Strings"
richtig = "An \" und \' erkennt man Strings"
print(richtig)

### Output
# " und ' 

Raw Strings

Manchmal muss es schnell gehen – beim Kopieren eines Dateipfades aus Windows müsste man Backslashes in reguläre Slashes umwandeln oder überall doppelte Backslashes einsetzen. Das dauert lange und ist dem faulen Programmierer zu manuell. Dafür gibt es einen Quickfix: Raw Strings. Dafür setzt man vor dem String ein einfaches r und dann werden alle Escape Character im String ausgeschaltet. Das bedeutet, Backslashes werden nun als reguläre Zeichen erkannt:

mit_slash_ersetzen = "C:/Users/Hackerman/"
backslash_hinzufuegen = "C:\\Users\\Hackerman\\"
nur_ein_r_anfuegen = r"C:\Users\Hackerman\" 

F-Strings - Variablen in Strings einsetzen

Nehmen wir an, in unserem Online-Game soll unser Spieler beim Nutzernamen gegrüßt werden. Der Nutzername ist die Variable „username“. Diesen erhalten wir beim Login:

username = "xXn00bd3str0y3r2008Xx"
last_login = "25.12.2016"
print("Hallo " + username + ", du warst zuletzt am " + last_login + "online.")

### Output:
# Hallo xXn00bd3str0y3r2008Xx, du warst zuletzt am 25.12.2016 online. 

Bei vielen Variablen werden wir eine sehr lange Kette an Kombinationen aus String-Texten, Pluszeichen und Variablennamen haben. Um das zu umgehen, können wir sogenannte f-Strings benutzen. Diese erlauben uns innerhalb einer Strings Variablen einzusetzen.

  1. Dafür müssen wir vor den Anführungsstrichen des Strings ein „f“ schreiben.
  2. Innerhalb des Strings müssen Variablen dann mit geschweiften Klammern und dem Variablennamen ({username}) stehen.
username = "xXn00bd3str0y3r2008Xx"
last_login = "25.12.2016"
print(f"Hallo {username}, du warst zuletzt am {last_login} online.")

### Output:
# Hallo xXn00bd3str0y3r2008Xx, du warst zuletzt am 25.12.2016 online. 

Ein weiterer Vorteil von f-Strings ermöglicht uns Variablen, die keine Strings sind, ohne Umformungen in Strings umwandeln zu lassen.

alter = 22
print("Du bist " + alter + " Jahre alt") 

Der Befehl könnte nicht ausgeführt werden, denn Python versucht einen Text mit einer Zahl zusammenzurechnen, was logischerweise nicht funktioniert. Deshalb müssen wir das Alter in einen String umwandeln.

alter = 22
print("Du bist " + str(alter) + " Jahre alt")

### Output:
# Du bist 22 Jahre alt 

Mit einem f-String funktioniert das aber auch ohne Umwandlung:

alter = 22
print(f"Du bist {alter} Jahre alt")

### Output:
# Du bist 22 Jahre alt 

ARTIKEL TEILEN

Hast du Fragen? Hinterlasse einen Kommentar!