Python: Strings
► Python-Dokumentation: Text Sequence Type string
Variablen können Zeichen oder Zeichenketten (Strings) speichern. Diese werden von Doublequotes " oder Singlequotes ' umschlossen. Diese Zeichen werden mit dem Backslash \ maskiert, wenn sie Teil des Strings sind.
Mehrzeilige Strings werden mit dreifachen Anführungszeichen umschlossen (""" oder ''').
Zeilenumbrüche können auch mit der Escape-Sequenz \n gekennzeichnet werden.
a = "Hallo Welt!"
print(a)
print(type(a))
print("\"Hallo Welt!\"")
b = """Dies ist ein Text,
der einen Zeilenumbruch enthält."""
c = "Dies ist ein Text,\nder einen Zeilenumbruch enthält."
Strings verknüpfen
► Python-Dokumentation: Common Sequence Operations
Durch den Operator + können Strings mit anderen Strings verknüpft werden. Durch den Operator * können Strings vervielfacht werden.
a = "We"
b = "lt! "
c = "Hallo "
d = a + b
c += d # alternative Schreibweise für c = c + d
c *= 3 # alternative Schreibweise für c = c * 3
print(c)
Strings mit Variablen verknüpfen
In Python existieren verschiedene Verfahren, um Strings und Variablen zu verknüpfen.
Im ersten Beispiel werden die Variablen einfach wie oben beschrieben mit einem +-Zeichen verknüpft, was allerdings am meisten Code erzeugt.
Im zweiten Beispiel werden alle %s-Platzhalter im String durch die Elemente des folgenden Tupels in der Reihenfolge ihres Auftretens ersetzt.
Im dritten Beispiel wird auf den String die Methode format() angewendet, bei der die geschweiften Klammern im String durch die Argumente der Methode ersetzt werden. Die Zahlen in den geschweiften Klammern geben den Index der Argumente an, wodurch die Reihenfolge variabel gestaltet werden kann.
Im vierten Beispiel, bei dem dem String ein f vorangestellt ist, werden die entsprechenden Variablen einfach direkt in die geschweiften Klammern geschrieben, was am wenigsten Code erzeugt und dadurch sehr gut lesbar ist.
vorname = "Luise"
nachname = "Müller"
strasse = "Birkenweg"
hausnummer = "42a"
plz = "12345"
ort = "Rosental"
a = "Anschrift: " + vorname + " " + nachname + ", " + strasse + " " + hausnummer + ", " + plz + " " + ort
b = "Anschrift: %s %s, %s %s, %s %s" % (vorname, nachname, strasse, hausnummer, plz, ort)
c = "Anschrift: {5} {4}, {3} {2}, {1} {0}".format(ort, plz, hausnummer, strasse, nachname, vorname)
d = f"Anschrift: {vorname} {nachname}, {strasse} {hausnummer}, {plz} {ort}"
print(a)
print(b)
print(c)
print(d)
String in Teilstring zerlegen
► Python-Dokumentation: Common Sequence Operations
Die Anzahl der Zeichen eines Strings lässt sich ähnlich wie bei Listen, Tupeln und Dictionaries mit der Funktion len() ermitteln, wobei die einzelnen Zeichen als Elemente des Strings betrachtet werden können. Die Länge eines Zeichens, das mit einem Backslash \ maskiert wurde, beträgt dennoch 1. Strings können wie Listen und Tupel in ihre Bestandteile zerlegt werden.
a = "Hallo Welt!"
print(len(a))
print(len("\"Hallo Welt!\"\n")) # "Hallo Welt!" plus Zeilenvorschub hat eine Länge von 14 Zeichen.
print(a[3]) # Gibt das Zeichen an Position 3 aus.
print(a[2:4]) # Es werden die Zeichen ab Position 2 bis ausschließlich Position 4 ausgegeben.
print(a[1:]) # Es werden die Zeichen ab Position 1 bis zum Ende des Strings ausgegeben.
print(a[:3]) # Es werden die Zeichen vom Anfang des Strings bis ausschließlich Position 3 ausgegeben.
print(a[-5:]) # Es werden die letzten 5 Zeichen ausgegeben.
Mit einer Schleife lassen sich alle Zeichen eines Strings einzeln ausgeben:
a = "Hallo Welt!"
for c in a:
print(c)
► Python-Dokumentation: split rsplit
Außerdem lassen sich Strings mit split() nach vorgegebenen Zeichen trennen. Wird kein Trennzeichen vorgegeben, wird das Leerzeichen als Trennzeichen angenommen. Als zweites Argument kann die maximale Anzahl der isolierten Teilstrings angegeben werden. Es wird eine Liste mit den gefundenen Teilstrings zurückgegeben. Im letzten Element der Liste ist dann der restliche String enthalten. rsplit() verhält sich wie split() mit der Ausnahme, dass bei Angabe des zweiten Arguments vom Ende des Strings her getrennt wird. Der restliche String befindet sich dann im ersten Element der zurückgegebenen Liste.
a = "Hallo Welt!"
print(a.split())
b = "Europa,Asien,Afrika,Amerika,Australien"
print(b.split(",")) # alle Elemente nach , getrennt zurückgeben
print(b.split(",", 3)) # die ersten drei Elemente zurückgeben
print(b.rsplit(",", 3)) # die letzten drei Elemente zurückgeben
► Python-Dokumentation: partition rpartition
Weiterhin können Strings mit partition(x) in ein Tupel mit drei Elementen zerlegt werden, bei der das erste Element den String vor dem ersten Vorkommen von x enthält. Das zweite Element enthält x und das dritte den restlichen String.
rpartition(x) verhält sich genauso mit der Ausnahme, dass nach dem letzten Vorkommen von x getrennt wird.
b = "Europa,Asien,Afrika,Amerika,Australien"
print(b.partition(","))
print(b.rpartition(","))
Zeichen(-ketten) finden
► Python-Dokumentation: find rfind
Mit den Funktionen find() bzw. rfind() lassen sich die Positionen gesuchter Zeichenketten bestimmen, wobei der Wert -1 zurückgegeben wird, falls das Element nicht gefunden wird.
find() sucht ab dem Anfang des Strings, rfind() ab dem Ende.
a = "Hallo Welt!"
print(a.find("Leute"))
print(a.find("Welt"))
print(a.rfind("e"))
Vorkommen von Zeichen(-ketten) ermitteln
► Python-Dokumentation: count
Mit der Funktion count() lässt sich die Anzahl gesuchter Zeichenketten innerhalb von Strings ermitteln.
Mit if/in (s. Bedingungen) lässt sich ermitteln, ob eine Zeichenkette in einem String überhaupt enthalten ist.
a = "Hallo Welt!"
print(a.count("l"))
print(a.count("x"))
if "Welt" in a:
print("\"Welt\" ist vorhanden.")
else: # gleichbedeutend mit: if "Welt" not in a
print("\"Welt\" ist nicht vorhanden.")
Zeichenketten extrahieren
Hier ein Beispiel, wie man eine Teilzeichenkette extrahieren kann, wenn lediglich die umgebenden Zeichen bekannt sind. Die Funktion string_fragment() gibt eine Liste aller Funde von Zeichenketten zurück, die von start und end umgeben sind. Wird als viertes Argument True übergeben, sind start und end im Ergebnis enthalten, bei False nicht.
def string_fragment(string, start, end, full):
# returns a list of all fragments within string between start and end
# full == true: start and end included; full == false: start and end excluded
fragments = []
while start in string and end in string:
pos_start = string.find(start)
len_start = len(start)
rest = string[pos_start + len_start:]
if end in rest:
pos_end = rest.find(end)
len_end = len(end)
pos0 = pos_start + (0 if full else len_start)
fragments.append(string[pos0:pos0 + pos_end + (len_start + len_end if full else 0)])
else:
return fragments
string = rest[pos_end + len_end:]
return fragments
str2 = "<div style='text-align:center;'><span class='info'>Hallo!</span></div>"
print(string_fragment(str2, "<span", "</span>", True)[0])
print(string_fragment(str2, "class='", "'", False)[0])
Zeichen ersetzen
► Python-Dokumentation: replace
Um bekannte Zeichen innerhalb eines Strings zu ersetzen, wird die Funktion replace() verwendet.
a = "Hallo Welt!"
a = a.replace("Welt", "Leute")
print(a)
Zeichen entfernen
► Python-Dokumentation: strip lstrip rstrip
Die Funktion strip() entfernt alle übergebenen Zeichen in beliebiger Reihenfolge vom Anfang und Ende eines Strings. Wird kein Zeichen übergeben, so werden Leerzeichen entfernt.
lstrip() entfernt die Zeichen nur vom Anfang des Strings. rstrip() entfernt die Zeichen nur vom Ende des Strings.
a = "xo-oxo-ox"
print(a.strip("ox"))
print(a.lstrip("ox"))
print(a.rstrip("ox"))
Strings in Zahlen umwandeln
► Python-Dokumentation: float int
Um einen String, der einen Zahlenwert enthält, mit einer anderen Zahl zu verrechnen, muss der String zunächst mit der Funktion float() bzw. int() in eine Zahl umgewandelt werden.
float() wird für Gleitkommazahlen und int() für Ganzzahlen verwendet.
a = "42"
b = 2
c = int(a) * b
print(c)
a = "42.5"
b = 2
c = float(a) * b
print(c)
d = int(a) * b # Strings mit einer Gleitkommazahl können nicht in Ganzzahlen umgewandelt werden.
d = a + b # Strings können nicht mit Zahlen verknüpft werden.
Codepoint ermitteln
► Python-Dokumentation: ord chr
Die Funktion ord() ermittelt den Unicode-Codepoint eines Zeichens. Der Rückgabewert der Funktion chr() ist das Zeichen des angegebenen Unicode-Codepoints.
a = "Schöne Grüße!"
print(ord(a[3])) # das Zeichen an Position 3
print(chr(246)) # die Umkehrfunktion von ord()
Zeichen mit niedrigstem bzw. höchstem Codepoint finden
► Python-Dokumentation: min max
Mit Hilfe der Funktionen min() bzw. max() ist es möglich, innerhalb eines Strings das Zeichen mit dem niedrigsten bzw. höchsten Codepoint zu ermitteln.
a = "Schöne Grüße!"
print("'" + min(a) + "'")
print("'" + max(a) + "'")
Strings formatiert ausgeben
► Python-Dokumentation: format
Um Strings in einer formatierten Weise auszugeben, wird die Funktion format() verwendet. Dies ist insbesondere nützlich, um Strings in einer Datei zu speichern, auf die lesend oder schreibend zugegriffen werden soll. Durch eine entsprechende Formatierung kann so die genaue Position eines Strings innerhalb der Datei festgelegt werden. Außerdem lassen sich komplexere Ausgaben über das Terminal auf diese Weise z. B. in einer Tabelle übersichtlich gestalten.
Siehe auch: Formatierte Ausgabe von Strings
Weitere Methoden
► Python-Dokumentation: String Methods
a = "Hallo Welt!"
if a.startswith("Hallo") == True: # prüft, ob a mit der Zeichenkette "Hallo" beginnt
if a.endswith("Welt!") == True: # prüft, ob a mit der Zeichenkette "Welt!" endet
b = "123"
if b.isalnum() == True: # prüft, ob b nur aus Buchstaben und/oder Zahlen besteht
if b.isalpha() == True: # prüft, ob b nur aus Buchstaben besteht
if b.isnumeric() == True: # prüft, ob b aus Zahlen besteht