Zeichenketten
Die deutsche Bezeichnung Zeichenkette für String, macht es deutlicher. Strings sind einfach nur eine Aneinanderreihungen von beliebigen Zeichen.
Du hast sie in den vorhergehenden Teilen schon kennengelernt. In einen String kannst du im Prinzip alles hineinstecken.
# coding = 'utf-8'
s1 = 'Homer'
s2 = '1969'
s3 = 'Dies ist ein ganzer Satz.'
s4 = 'Auf den Alkohol - Der Beginn und die Lösung sämtlicher Lebenprobleme. (Homer Simpson)'
Eine Stringkonstante wird entweder in doppelte Hochkommata wie oben oder in doppelte Gänsefüßchen eingefasst:
s1="Homer"
Ich bevorzuge die Version mit den Hochkommata, da es für mich einfacher zu tippen ist.
Länge von Strings
Die eingebaute Funktion len()
von Python. Kann die Länge von Strings und die Anzahl der Elemente in Listen, Tupeln oder Dictionaries zurückgeben.
s1 = 'Homer'
print(len(s1)
Liefert dir wie erwartet eine 5
.
Über einen String iterieren
Da wir jetzt die Länge eines Strings bestimmen können, können wir uns jedes einzelne Zeichen des Strings ausgeben lassen:
s = 'Homer'
for pos in range(0,len(s)):
print(s[pos])
Damit bekommst du alle Zeichen in s
untereinander ausgegeben.
String-Funktionen
Es gibt verschiedene Funktionen, die dir das Arbeiten mit einem String einfacher machen. Eine Funktion, die dir zeigt, ob ein Zeichen im String vorhanden ist, kannst du jetzt eigentlich selber schreiben:
def find_in_string(s, c):
for pos in range(0,len(s)):
if(s[pos] == c):
return pos
return -1
print(find_in_string('Homer','e'))
print(find_in_string('Homer','n'))
Die Methode find_in_string sucht im übergebenen String s nach dem Zeichen c und liefert dessen Position zurück. Wenn c nicht in s enthalten ist, wird -1 zurückgeben.
Allerdings macht Python uns das Leben einfacher mit der eingebauten Methode find()
, die genau das gleiche tut.
print('Homer'.find('e'))
print('Homer'.find('n'))
Was es mit der Schreibweise mit dem . zwischen String und Methodennamen auf sich hat, erkläre ich dir im Kapitel Objekte genauer. find()
findet nicht die erste Position eines Zeichens sondern auch ganzer Strings
println('Homer'.find('Home')
Dies gibt dir eine 0
aus, da Python immer bei 0
anfängt zu zählen. Beachte auch, dass beim Suchen die Groß-/Kleinschreibung beachtet wird, wenn du 'home'
suchst wird dir eine -1
ausgegeben.
Konvertierung in Groß- oder Kleinbuchstaben
Für die Konvertierung des ganzen String benutzt du die Methode upper()
und lower()
wandelt die den gesamten String in Kleinbuchstaben um.
print('Homer'.lower())
print('Homer'.upper())
print('homer'.capitalize())
capitalize()
wandelt nur den ersten Buchstaben des Strings in einen Großbuchstaben um. Die Ausgabe des Programms sieht dann so aus:
Beachte, dass alle drei Methoden einen neuen String zurückliefert und den alten unangetastet lassen! Mit diesem Wissen, kannst du find() abgewöhnen, die Groß-/Kleinschreibung zu beachten
println('Homer'.lower().find('home'.lower())
Hierbei erhältst du jetzt eine 0
, da beide Strings vor dem Aufruf von find()
komplett in Kleinbuchstaben umgewandelt werden.
Die title() Methode arbeitet etwas spezieller, sie wandelt den ersten Buchstaben jedes Wortes in einen Großbuchstaben um.
print('dr. nick riviera'.title())
Dies liefert den neuen String 'Dr. Nick Riviera'
Eine Methode, die sehr nützlich gerade bei Usereingaben und beim Parsen von Zeilen in einer Datei ist, ist split()
. Sie entfernt Leerzeichen und Zeilenumbrüche (sog. Whitspaces) am Beginn und am Ende einer Zeichenkette
s= ' mit Leerzeichen '
s = s.strip()
print(f'*{s}*')
In der Ausgabe '*mit Leerzeichen*'
erkennst du das vor bzw. nach dem Sternchen keine Leerzeichen mehr vorhanden sind.
Wenn du weißt, dass du nur am Anfang oder am Ende Whitspaces entfernen musst, kannst alternativ auch lstrip()
bzw. rstrip()
benutzen. Allen Methoden kannst du auch per Parameter mitteilen, welche Zeichen sie entfernen sollen
satz.rstrip('.!?')
Hier werden alle Satzzeichen am Satzende entfernt.
f-Strings
Jetzt komme ich endlich dazu, dir die f-Strings nahezubringen. Ein f-String ist ein formatierter String, der dir die Möglichkeit bietet, Variablenwerte in den String aufzunehmen.
a=5
b=10
produkt = a * b
print(f'Das Produkt aus {a} und {b} ist {produkt}')
Innerhalb der geschweiften Klammern wird einfach nur der Variablenname eingetragen, zu Laufzeit ersetzt Python diese Platzhalter durch die aktuellen Werte. Daher wird dir ‚Das Produkt aus 5 und 10 ist 50′ ausgegeben‘. Gerade bei Gleitkommazahlen macht es Sinn, die Anzahl der Nachkommastellen zu begrenzen, dazu trennst du die Formatierungsanweisung mit Doppelpunkt vom Variablennamen ab.
import math
print(f'Pi ist {math.pi}')
print(f'Pi ist {math.pi:.2f}')
Das erste print()
gibt die alle verfügbaren Nachkommastellen aus, das zweite nur noch zwei.
Strings zerlegen
Ein wichtiger Anwendungsfall bei Strings ist die Zerlegung in einzelne Teile. Beispielsweise bei der Verarbeitung von kommaseparierten Dateien (CSV).
Dazu hat Python eine passende Methode parat: split()
. Diese baut eine Liste aus den Einzelteilen eines Strings auf, die durch ein Trennzeichen separiert sind. Defaultmäßig ist dies das Leerzeichen, du kannst aber auch ein Zeichen deiner Wahl übergeben
s = 'Dies ist ein ganzer Satz.'
print(f'zerlegt= {s.split()}')
werte = '1,2,3,4,5,6,7,8,9'
print(f'werteliste = {werte.split(",")}')
Listen werden in Python mit eckigen Klammern deklariert und auch so ausgegeben. Dazu gibt’s genaueres dann im nächsten Teil.