Python-Strings meistern: Erstellung, Formatierung und Manipulation
Python-Strings
In diesem Tutorial lernen Sie, Strings in Python zu erstellen, zu formatieren, zu modifizieren und zu löschen. Außerdem werden verschiedene String-Operationen und -Funktionen vorgestellt.
Video: Python-Strings
Was ist ein String in Python?
Ein String ist eine Sequenz von Zeichen.
Ein Zeichen ist einfach ein Symbol. Zum Beispiel hat die englische Sprache 26 Zeichen.
Computer arbeiten nicht mit Zeichen, sondern mit Zahlen (Binär). Auch wenn Sie Zeichen auf dem Bildschirm sehen, werden sie intern als Kombination von 0 und 1 gespeichert und manipuliert.
Diese Umwandlung von Zeichen in Zahlen nennt man Encoding, der umgekehrte Prozess Decoding. ASCII und Unicode sind gängige Encodings.
In Python ist ein String eine Sequenz von Unicode-Zeichen. Unicode wurde eingeführt, um alle Zeichen aller Sprachen einzuschließen und Einheitlichkeit im Encoding zu schaffen. Mehr über Unicode erfahren Sie unter Python Unicode.
Wie erstellt man einen String in Python?
Strings können durch Einrahmen von Zeichen in einfache oder doppelte Anführungszeichen erstellt werden. Auch dreifache Anführungszeichen sind in Python möglich, werden aber allgemein für mehrzeilige Strings und Docstrings verwendet.
# Strings in Python definieren
# alle folgenden sind äquivalent
my_string = 'Hallo'
print(my_string)
my_string = "Hallo"
print(my_string)
my_string = '''Hallo'''
print(my_string)
# dreifache Anführungszeichen können sich über mehrere Zeilen erstrecken
my_string = """Hallo, willkommen in der Welt von Python"""
print(my_string)
Bei Ausführung des Programms ist die Ausgabe:
Hallo Hallo Hallo Hallo, willkommen in der Welt von Python
Wie greift man auf Zeichen in einem String zu?
Einzelne Zeichen können über Indexing und ein Bereich von Zeichen über Slicing abgerufen werden. Der Index beginnt bei 0. Der Versuch, auf einen Index außerhalb des Bereichs zuzugreifen, löst einen IndexError aus. Der Index muss eine Ganzzahl sein. Floats oder andere Typen führen zu TypeError.
Python erlaubt negative Indizierung für seine Sequenzen.
Der Index -1 bezieht sich auf das letzte Element, -2 auf das vorletzte usw. Wir können einen Bereich von Elementen in einem String mit dem Slicing-Operator : (Doppelpunkt) abrufen.
# Auf String-Zeichen in Python zugreifen
str = 'programiz'
print('str = ', str)
# erstes Zeichen
print('str[0] = ', str[0])
# letztes Zeichen
print('str[-1] = ', str[-1])
# Slicing 2. bis 5. Zeichen
print('str[1:5] = ', str[1:5])
# Slicing 6. bis 2. letztes Zeichen
print('str[5:-2] = ', str[5:-2])
Bei Ausführung des obigen Programms erhalten wir folgende Ausgabe:
str = programiz str[0] = p str[-1] = z str[1:5] = rogr str[5:-2] = am
Versuchen wir, auf einen Index außerhalb des Bereichs zuzugreifen oder Zahlen außer Ganzzahlen zu verwenden, erhalten wir Fehler.
# Index muss im Bereich sein
>>> my_string[15]
...
IndexError: string index out of range
# Index muss eine Ganzzahl sein
>>> my_string[1.5]
...
TypeError: string indices must be integers
Slicing lässt sich am besten visualisieren, indem man den Index zwischen den Elementen betrachtet, wie unten gezeigt.
Wenn wir einen Bereich abrufen wollen, benötigen wir den Index, der den Teil aus dem String schneidet.

Wie ändert oder löscht man einen String?
Strings sind unveränderlich. Das bedeutet, dass Elemente eines Strings nach der Zuweisung nicht geändert werden können. Wir können einfach verschiedene Strings demselben Namen neu zuweisen.
>>> my_string = 'programiz'
>>> my_string[5] = 'a'
...
TypeError: 'str' object does not support item assignment
>>> my_string = 'Python'
>>> my_string
'Python'
Wir können keine Zeichen aus einem String löschen oder entfernen. Das Löschen des gesamten Strings ist jedoch mit dem Schlüsselwort del möglich.
>>> del my_string[1]
...
TypeError: 'str' object doesn't support item deletion
>>> del my_string
>>> my_string
...
NameError: name 'my_string' is not defined
Python-String-Operationen
Es gibt viele Operationen, die mit Strings durchgeführt werden können, was sie zu einem der am häufigsten verwendeten Datentypen in Python macht.
Mehr über die in Python verfügbaren Datentypen erfahren Sie unter: Python-Datentypen
Verkettung von zwei oder mehr Strings
Das Zusammenfügen von zwei oder mehr Strings zu einem einzelnen nennt man Verkettung.
Der +-Operator macht dies in Python. Das bloße Nebeneinanderstellen von zwei String-Literalen verkettet sie ebenfalls.
Der *-Operator kann verwendet werden, um den String eine gegebene Anzahl an Malen zu wiederholen.
# Python-String-Operationen
str1 = 'Hallo'
str2 = 'Welt!'
# mit +
print('str1 + str2 = ', str1 + str2)
# mit *
print('str1 * 3 =', str1 * 3)
Bei Ausführung des obigen Programms erhalten wir folgende Ausgabe:
str1 + str2 = HalloWelt! str1 * 3 = HalloHalloHallo
Das Nebeneinanderstellen zweier String-Literale verkettet sie ebenfalls wie der +-Operator.
Wenn wir Strings in verschiedenen Zeilen verketten wollen, können wir Klammern verwenden.
>>> # zwei String-Literale zusammen
>>> 'Hallo ''Welt!'
'Hallo Welt!'
>>> # mit Klammern
>>> s = ('Hallo '
... 'Welt')
>>> s
'Hallo Welt'
Über einen String iterieren
Wir können über einen String mit einer for-Schleife iterieren. Hier ist ein Beispiel, um die Anzahl der 'l' in einem String zu zählen.
# Über einen String iterieren
count = 0
for letter in 'Hallo Welt':
if(letter == 'l'):
count += 1
print(count, 'Buchstaben gefunden')
Bei Ausführung des obigen Programms erhalten wir folgende Ausgabe:
3 Buchstaben gefunden
String-Mitgliedschaftstest
Wir können testen, ob ein Substring in einem String existiert oder nicht, mit dem Schlüsselwort in.
>>> 'a' in 'program'
True
>>> 'at' not in 'battle'
False
Eingebaute Funktionen für die Arbeit mit Python
Verschiedene eingebaute Funktionen, die mit Sequenzen funktionieren, funktionieren auch mit Strings.
Einige der häufig verwendeten sind enumerate() und len(). Die enumerate()-Funktion gibt ein Enumerate-Objekt zurück. Es enthält den Index und Wert aller Elemente im String als Paare. Dies kann für Iteration nützlich sein.
Ebenso gibt len() die Länge (Anzahl der Zeichen) des Strings zurück.
str = 'kalt'
# enumerate()
list_enumerate = list(enumerate(str))
print('list(enumerate(str)) = ', list_enumerate)
# Zeichenanzahl
print('len(str) = ', len(str))
Bei Ausführung des obigen Programms erhalten wir folgende Ausgabe:
list(enumerate(str)) = [(0, 'c'), (1, 'o'), (2, 'l'), (3, 'd')] len(str) = 4
Python-String-Formatierung
Escape-Sequenzen
Wenn wir einen Text wie Er sagte: "Was ist da?" ausgeben wollen, können wir weder einfache noch doppelte Anführungszeichen verwenden. Dies führt zu einem SyntaxError, da der Text sowohl einfache als auch doppelte Anführungszeichen enthält.
>>> print("Er sagte, \"Was ist da?\"")
...
SyntaxError: invalid syntax
>>> print('Er sagte, "Was ist da?"')
...
SyntaxError: invalid syntax
Eine Möglichkeit, dieses Problem zu umgehen, ist die Verwendung von dreifachen Anführungszeichen. Alternativ können wir Escape-Sequenzen verwenden.
Eine Escape-Sequenz beginnt mit einem Backslash und wird anders interpretiert. Wenn wir ein einfaches Anführungszeichen für einen String verwenden, müssen alle einfachen Anführungszeichen im String escaped werden. Gleiches gilt für doppelte Anführungszeichen. Hier ist, wie man den obigen Text darstellen kann.
# mit dreifachen Anführungszeichen
print('''Er sagte, "Was ist da?"''')
# einfache Anführungszeichen escapen
print('Er sagte, "Was\'s da?"')
# doppelte Anführungszeichen escapen
print("Er sagte, \"Was ist da?\"")
Bei Ausführung des obigen Programms erhalten wir folgende Ausgabe:
Er sagte, "Was ist da?" Er sagte, "Was ist da?" Er sagte, "Was ist da?"
Hier ist eine Liste aller von Python unterstützten Escape-Sequenzen.
| Escape-Sequenz | Beschreibung |
|---|---|
| \newline | Backslash und Newline ignoriert |
| \\ | Backslash |
| \' | Einfaches Anführungszeichen |
| \" | Doppeltes Anführungszeichen |
| \a | ASCII Bell |
| \b | ASCII Backspace |
| \f | ASCII Formfeed |
| \n | ASCII Linefeed |
| \r | ASCII Carriage Return |
| \t | ASCII Horizontal Tab |
| \v | ASCII Vertical Tab |
| \ooo | Zeichen mit Oktalwert ooo |
| \xHH | Zeichen mit Hexadezimalwert HH |
Hier sind einige Beispiele:
>>> print("C:\\Python32\\Lib")
C:\Python32\Lib
>>> print("Dies wird\ning zwei Zeilen ausgegeben")
Dies wird
in zwei Zeilen ausgegeben
>>> print("Dies ist \x48\x45\x58 Darstellung")
Dies ist HEX Darstellung
Raw Strings, um Escape-Sequenzen zu ignorieren
Manchmal möchten wir Escape-Sequenzen in einem String ignorieren. Dazu können wir r oder R vor den String setzen. Dies bedeutet, dass es ein Raw String ist und jede Escape-Sequenz darin ignoriert wird.
>>> print("Dies ist \x61 \ngutes Beispiel")
Dies ist a
gutes Beispiel
>>> print(r"Dies ist \x61 \ngutes Beispiel")
Dies ist \x61 \ngutes Beispiel
Die format()-Methode für String-Formatierung
Die format()-Methode, die beim String-Objekt verfügbar ist, ist sehr vielseitig und mächtig bei der Formatierung von Strings. Format-Strings enthalten geschweifte Klammern {} als Platzhalter oder Ersetzungsfelder, die ersetzt werden.
Wir können Positionsargumente oder Schlüsselwortargumente verwenden, um die Reihenfolge anzugeben.
# Python String format() Methode
# Standard (implizite) Reihenfolge
default_order = "{}, {} und {}".format('Hans','Karl','Thomas')
print('\n--- Standard-Reihenfolge ---')
print(default_order)
# Reihenfolge mit Positionsargument
positional_order = "{1}, {0} und {2}".format('Hans','Karl','Thomas')
print('\n--- Positions-Reihenfolge ---')
print(positional_order)
# Reihenfolge mit Schlüsselwortargument
keyword_order = "{s}, {k} und {h}".format(h='Hans',k='Karl',s='Thomas')
print('\n--- Schlüsselwort-Reihenfolge ---')
print(keyword_order)
Bei Ausführung des obigen Programms erhalten wir folgende Ausgabe:
--- Standard-Reihenfolge --- Hans, Karl und Thomas --- Positions-Reihenfolge --- Karl, Hans und Thomas --- Schlüsselwort-Reihenfolge --- Thomas, Karl und Hans
Die format()-Methode kann optionale Formatspezifikationen haben. Sie werden vom Feldnamen durch einen Doppelpunkt getrennt. Zum Beispiel können wir einen String in einem gegebenen Raum linksbündig <, rechtsbündig > oder zentriert ^ ausrichten.
Wir können auch Ganzzahlen als binär, hexadezimal usw. formatieren und Floats runden oder im Exponentenformat anzeigen. Es gibt unzählige Formatierungsmöglichkeiten. Besuchen Sie hier für alle String-Formatierungen, die mit der format()-Methode verfügbar sind.
>>> # Ganzzahlen formatieren
>>> "Binärdarstellung von {0} ist {0:b}".format(12)
'Binärdarstellung von 12 ist 1100'
>>> # Floats formatieren
>>> "Exponent-Darstellung: {0:e}".format(1566.345)
'Exponent-Darstellung: 1.566345e+03'
>>> # runden
>>> "Ein Drittel ist: {0:.3f}".format(1/3)
'Ein Drittel ist: 0.333'
>>> # String-Ausrichtung
>>> "|{:<10}|{:^10}|{:>10}|".format('Butter','Brot','Schinken')
'|Butter | Brot | Schinken|'
Altmodische Formatierung
Wir können Strings sogar wie den alten sprintf()-Stil in der C-Programmiersprache formatieren. Wir verwenden den %-Operator dafür.
>>> x = 12.3456789
>>> print('Der Wert von x ist %3.2f' % x)
Der Wert von x ist 12.35
>>> print('Der Wert von x ist %3.4f' % x)
Der Wert von x ist 12.3457
Gängige Python-String-Methoden
Es gibt zahlreiche Methoden, die beim String-Objekt verfügbar sind. Die oben erwähnte format()-Methode ist eine davon. Einige der häufig verwendeten Methoden sind lower(), upper(), join(), split(), find(), replace() etc. Hier ist eine vollständige Liste aller eingebauten Methoden für die Arbeit mit Strings in Python.
>>> "PrOgRaMiZ".lower()
'programiz'
>>> "PrOgRaMiZ".upper()
'PROGRAMIZ'
>>> "Dies wird alle Wörter in eine Liste aufteilen".split()
['Dies', 'wird', 'alle', 'Wörter', 'in', 'eine', 'Liste', 'aufteilen']
>>> ' '.join(['Dies', 'wird', 'verbinden', 'alle', 'Wörter', 'in', 'einen', 'String'])
'Dies wird verbinden alle Wörter in einen String'
>>> 'Frohes Neues Jahr'.find('eu')
7
>>> 'Frohes Neues Jahr'.replace('Frohes','Fantastisches')
'Fantastisches Neues Jahr'
Python
- C# Strings meistern: Grundlagen, Operationen & fortgeschrittene Techniken
- Python-Dictionaries meistern: Erstellung, Manipulation und fortgeschrittene Techniken
- Java Strings meistern: Erstellung, Methoden und Best Practices
- String-Repräsentationen in Java Enums meistern
- Python String-Operationen meistern: Replace, Join, Split, Reverse und Case Conversion
- Pythons strip()-Methode meistern: Umfassender Leitfaden & Praxisbeispiele
- Pythons str.count(): Zeichen & Teilstrings zählen mit Beispielen
- Python format()-Strings meistern mit klaren Beispielen
- Python len(): Praktischer Leitfaden zur Messung von Objektlängen
- Pythons String.find()-Methode meistern: Syntax, Beispiele & Alternativen