Stringoperationen in Python
Dieses Tutorial gibt eine Einführung in die Stringoperationen in Python: Angefangen mit Zusammenfügen von Zeichenketten, Bestimmen der Länge und das Benutzen des Index-Operators, um auf einzelne Zeichen zuzugreifen, zeigen wir auch die Iteration über Zeichenketten, Suchen und Vergleichen von Strings sowie erläutern kurz die Standard-Methoden für Strings in Python.
- Länge einer Zeichenkette
- Zeichenketten verbinden
- Zeichenketten und der Index-Operator
- Alle Zeichen ab dem 1. Zeichen
- Zeichen zwischen Index 2 bis 5
- Die letzen 3 Zeichen
- Die ersten zwei Zeichen
- Das vorletzte Zeichen
- Reihenfolge der Zeichen umkehren (Zeichenkette invertiert)
- String/Byte Konvertierung und Encoding
- Iterationen über Zeichenketten
- Überprüfen, ob eine andere Zeichenkette in einem String enthalten ist
- Gängige String-Methoden
Länge einer Zeichenkette
Die Länge eines Strings kann man mit der Funktion len()
bestimmen
jberries = 'jberries'
len(jberries) # => 8
Zeichenketten verbinden
Um Strings zu verbinden, kann man wie oft in anderen Programmiersprachen den Plus "+" Operator verwenden:
foo = "foo"
bar = "bar"
print(foo + bar) # => foobar
Allerdings macht Python keine automatische String-Konvertierung, falls eine der Variablen kein String ist, und wirft in diesem Fall einen Fehler. In diesem Fall können wir einfach die "str()
" Funktion verwenden:
foo = "foo"
bar = 5
print(foo + bar) # => TypeError: can only concatenate str (not "int") to str
print(foo + str(bar)) # => foo5
Zeichenketten und der Index-Operator
Mit dem "Index-Operator" kann man in Python auf die einzelnen Zeichen einer Zeichenkette zugreifen. So ist es sehr einfach zB. die ersten oder letzen x-Zeichen eines Strings zu extrahieren oder auf ein bestimmtes Zeichen zuzugereifen. Der Index-Operator kann sowohl mit positiven als auch mit negativen Indizes umgehen:
- positiven Werte zählen vom Anfang der Zeichenkette,
- negative Werte vom Ende
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
j | b | e | r | r | i | e | s |
-8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 |
Dazu hier einige Beispiele:
Alle Zeichen ab dem 1. Zeichen
print(jberries[1:]) # => berries
Zeichen zwischen Index 2 bis 5
print(jberries[2:5]) # => err
Die letzen 3 Zeichen
print(jberries[-3:]) # => ies
Die ersten zwei Zeichen
print(jberries[:-6]) # => jb
# oder
print(jberries[0:2]) # => jb
Das vorletzte Zeichen
print(jberries[-2]) # => e
Reihenfolge der Zeichen umkehren (Zeichenkette invertiert)
jberries = 'jberries'
jberries_inv = jberries[::-1]
print(jberries_inv) # => seirrebj
String/Byte Konvertierung und Encoding
Eine Zeichenkette mit utf-8 Kodierung in ein byte-array zu konvertieren:
test = bytes("😀JBerries", encoding = 'utf-8')
Anschließend können wir den byte-array wieder in einen String verwandeln:
str(test, encoding = "ascii", errors ="ignore") # => JBerries
Hier haben wir die ASCII-Kodierung ausgewählt, die das Smiley-Zeichen nicht beinhaltet und mit errors ="ignore"
den Fehler unterdrückt, der sonst geworfen wird.
Iterationen über Zeichenketten
Die einfachste Variante ist mit der for-Schleife:
for c in "jberries":
print (c)
Möchten wir nur über einen Teil des String iterieren, können wir dafür in der for-Schleife range
einsetzen:
jb = "jberries"
for i in range(2, 4):
print(jb[i])
# => e
# => r
Überprüfen, ob eine andere Zeichenkette in einem String enthalten ist
Das geht in Python wieder sehr einfach:
if "jb" in "jberries":
print("jb ist in jberries")
# => jb ist in jberries
Gängige String-Methoden
- s.lower(), s.upper() - gibt den String zurück in Groß- oder Kleinbuchstaben
- s.strip() - gibt den String ohne Leerzeichen am Anfang und am Ende des Strings zurück
- s.isalpha() - prüft, ob der String nur aus Buchstaben besteht (auch inklusive zB. Umlaute)
- s.isdigit() - prüft, ob der String nur aus Zahlen besteht
- s.isspace() - prüft, ob der String nur aus "Whitespace" Zeichen besteht (Leerzeichen, Tabulator, Zeilenumbruch usw.)
- s.startswith('foo') - prüft, ob die Zeichenkette mit einem gegebenen String anfängt
- s.endswith('bar') - prüft, ob die Zeichenkette mit einem gegebenen String endet
- s.find('foo') - prüft, ob der gegebener String in einer anderen Zeichenkette vorkommt und gibt dazu den ersten Index zurück, sonst -1
- s.replace('foo', 'bar') - gibt den String zurück, in dem der gegebener Suchstring durch einen anderen ersetzt wurde
- s.split('foo') - spaltet den String mit dem gegebenen Trennzeichen (Trennzeichen ist hier kein regulärer Ausdruckt)
- s.join(list) - verbindet eine Liste von Strings mit einem gegebenen Trennungszeichen, zB:
', '.join(['a', 'b', 'b']) -> a, b, c