Python Strings meistern: Erstellung, Zugriff und Manipulation
Strings in Python
Strings gehören zu den beliebtesten Typen in Python. Wir können sie einfach erstellen, indem wir Zeichen in Anführungszeichen einschließen. Python behandelt einfache Anführungszeichen genauso wie doppelte. Das Erstellen von Strings ist so einfach wie die Zuweisung eines Werts zu einer Variable. Zum Beispiel:
var1 = 'Hello World!' var2 = "Python Programming"
Zugriff auf Werte in Strings
Python unterstützt keinen Zeichentyp (Character); diese werden als Strings der Länge eins behandelt und somit auch als Teilstring betrachtet.
Für den Zugriff auf Teilstrings verwenden Sie eckige Klammern für Slicing zusammen mit dem Index oder den Indizes, um Ihren Teilstring zu erhalten. Zum Beispiel:
#!/usr/bin/python var1 = 'Hello World!' var2 = "Python Programming" print "var1[0]: ", var1[0] print "var2[1:5]: ", var2[1:5]
Wenn der obige Code ausgeführt wird, erzeugt er folgendes Ergebnis:
var1[0]: H var2[1:5]: ytho
Strings aktualisieren
Sie können einen bestehenden String "aktualisieren", indem Sie einer Variablen einen anderen String (neu) zuweisen. Der neue Wert kann mit dem vorherigen Wert zusammenhängen oder ein völlig anderer String sein. Zum Beispiel:
#!/usr/bin/python var1 = 'Hello World!' print "Updated String :- ", var1[:6] + 'Python'
Wenn der obige Code ausgeführt wird, erzeugt er folgendes Ergebnis:
Updated String :- Hello Python
Escape-Zeichen
Die folgende Tabelle listet Escape- oder nicht-druckbare Zeichen auf, die mit Backslash-Notation dargestellt werden können.
Ein Escape-Zeichen wird interpretiert; sowohl in einfach als auch in doppelt gequoteten Strings.
| Backslash-Notation | Hexadezimales Zeichen | Beschreibung |
|---|---|---|
| \a | 0x07 | Bell oder Alert |
| \b | 0x08 | Backspace |
| \cx | Control-x | |
| \C-x | Control-x | |
| \e | 0x1b | Escape |
| \f | 0x0c | Formfeed |
| \M-\C-x | Meta-Control-x | |
| \n | 0x0a | Neue Zeile (Newline) |
| \nnn | Oktalnotation, n im Bereich 0-7 | |
| \r | 0x0d | Wagenrücklauf (Carriage Return) |
| \s | 0x20 | Leerzeichen (Space) |
| \t | 0x09 | Tabulator (Tab) |
| \v | 0x0b | Vertikaler Tab |
| \x | Zeichen x | |
| \xnn | Hexadezimalnotation, n im Bereich 0-9, a-f, A-F |
String-Spezialoperatoren
Angenommen, String-Variable a hält 'Hello' und Variable b hält 'Python':
| Operator | Beschreibung | Beispiel |
|---|---|---|
| + | Konkatenation – Fügt Werte auf beiden Seiten zusammen. | a + b ergibt HelloPython |
| * | Wiederholung – Erstellt neue Strings durch mehrfaches Konkatenieren desselben Strings. | a*2 ergibt HelloHello |
| [] | Slice – Gibt das Zeichen am gegebenen Index zurück. | a[1] ergibt e |
| [ : ] | Range Slice – Gibt Zeichen im gegebenen Bereich zurück. | a[1:4] ergibt ell |
| in | Mitgliedschaft – Gibt true zurück, wenn Zeichen im String existiert. | H in a ergibt 1 |
| not in | Mitgliedschaft – Gibt true zurück, wenn Zeichen nicht im String existiert. | M not in a ergibt 1 |
| r/R | Raw String – Unterdrückt die Bedeutung von Escape-Zeichen. Syntax wie normale Strings, aber mit vorangestelltem 'r' oder 'R' vor den Anführungszeichen. | print r'\n' druckt \n |
| % | Formatierung – Führt String-Formatierung durch. | Siehe nächsten Abschnitt |
String-Formatierungsoperator
Eine der coolsten Python-Funktionen ist der String-Formatierungsoperator %. Dieser Operator ist einzigartig für Strings und kompensiert das Fehlen von Funktionen aus C's printf()-Familie. Ein einfaches Beispiel:
#!/usr/bin/python
print "My name is %s and weight is %d kg!" % ('Zara', 21)
Wenn der obige Code ausgeführt wird, erzeugt er folgendes Ergebnis:
My name is Zara and weight is 21 kg!
Hier ist die vollständige Liste der Symbole, die mit % verwendet werden können:
| Format-Symbol | Konvertierung |
|---|---|
| %c | Zeichen |
| %s | String-Konvertierung via str() vor Formatierung |
| %i | Vorzeichenbehaftete Dezimalzahl |
| %d | Vorzeichenbehaftete Dezimalzahl |
| %u | Vorzeichenlose Dezimalzahl |
| %o | Oktale Ganzzahl |
| %x | Hexadezimale Ganzzahl (Kleinbuchstaben) |
| %X | Hexadezimale Ganzzahl (GROSSBUCHSTABEN) |
| %e | Exponentialnotation (mit kleinem 'e') |
| %E | Exponentialnotation (mit GROSSem 'E') |
| %f | Gleitkommazahl |
| %g | Kürzeres von %f und %e |
| %G | Kürzeres von %f und %E |
Weitere unterstützte Symbole und Funktionalitäten:
| Symbol | Funktionalität |
|---|---|
| * | Argument spezifiziert Breite oder Präzision |
| - | Linksbündige Ausrichtung |
| + | Vorzeichen anzeigen |
| <sp> | Leerzeichen vor positiver Zahl |
| # | Fügt oktale führende Null ('0') oder hexadezimale führende '0x'/'0X' hinzu |
| 0 | Links mit Nullen auffüllen (statt Leerzeichen) |
| % | '%%' ergibt ein einzelnes literales '%' |
| (var) | Mapping-Variable (Dictionary-Argumente) |
| m.n | m = minimale Gesamtbreite, n = Stellen nach Dezimalpunkt (falls anwendbar) |
Triple Quotes (Dreifache Anführungszeichen)
Pythons dreifache Anführungszeichen ermöglichen Strings, die sich über mehrere Zeilen erstrecken, einschließlich verbatim NEWLINEs, TABs und anderen Sonderzeichen.
Die Syntax besteht aus drei aufeinanderfolgenden einfachen oder doppelten Anführungszeichen.
#!/usr/bin/python para_str = """this is a long string that is made up of several lines and non-printable characters such as TAB ( \t ) and they will show up that way when displayed. NEWLINEs within the string, whether explicitly given like this within the brackets [ \n ], or just a NEWLINE within the variable assignment will also show up. """ print para_str
Wenn der obige Code ausgeführt wird, erzeugt er folgendes Ergebnis. Beachten Sie, wie jedes einzelne Sonderzeichen in seine gedruckte Form umgewandelt wurde, bis hin zum letzten NEWLINE am Ende des Strings zwischen "up." und den schließenden dreifachen Anführungszeichen. NEWLINEs treten entweder mit explizitem Zeilenende oder Escape-Code (\n) auf:
this is a long string that is made up of several lines and non-printable characters such as TAB ( ) and they will show up that way when displayed. NEWLINEs within the string, whether explicitly given like this within the brackets [ ], or just a NEWLINE within the variable assignment will also show up.
Raw Strings behandeln den Backslash überhaupt nicht als Sonderzeichen. Jedes Zeichen, das Sie in einen Raw String einfügen, bleibt so, wie Sie es geschrieben haben:
#!/usr/bin/python print 'C:\\nowhere'
Ergebnis:
C:\nowhere
Jetzt nutzen wir Raw Strings. Wir setzen den Ausdruck in r'expression':
#!/usr/bin/python print r'C:\\nowhere'
Ergebnis:
C:\\nowhere
Unicode Strings
Normale Strings in Python werden intern als 8-bit ASCII gespeichert, während Unicode-Strings als 16-bit Unicode gespeichert werden. Dies ermöglicht einen vielfältigeren Zeichensatz, einschließlich Sonderzeichen aus den meisten Sprachen der Welt. Beispiel:
#!/usr/bin/python print u'Hello, world!'
Ergebnis:
Hello, world!
Wie Sie sehen, verwenden Unicode-Strings das Präfix u, genau wie Raw Strings das Präfix r verwenden.
Eingebaute String-Methoden
Python enthält folgende eingebaute Methoden zur String-Manipulation:
| Nr. | Methode & Beschreibung |
|---|---|
| 1 | capitalize() – Erster Buchstabe großschreiben |
| 2 | center(width, fillchar) – String zentriert in width Spalten mit Füllzeichen |
| 3 | count(str, beg=0, end=len(string)) – Zählt Vorkommen von str |
| 4 | decode(encoding='UTF-8', errors='strict') – Dekodiert String mit Codec |
| 5 | encode(encoding='UTF-8', errors='strict') – Kodiert String; bei Fehler ValueError außer ignore/replace |
| 6 | endswith(suffix, beg=0, end=len(string)) – Prüft, ob String mit Suffix endet |
| 7 | expandtabs(tabsize=8) – Erweitert Tabs zu Leerzeichen (Standard 8) |
| 8 | find(str, beg=0, end=len(string)) – Findet str, gibt Index oder -1 zurück |
| 9 | index(str, beg=0, end=len(string)) – Wie find(), aber Exception wenn nicht gefunden |
| 10 | isalnum() – True wenn mind. 1 Zeichen und alle alphanumerisch |
| 11 | isalpha() – True wenn mind. 1 Zeichen und alle alphabetic |
| 12 | isdigit() – True wenn nur Ziffern |
| 13 | islower() – True wenn mind. 1 cased char und alle lowercase |
| 14 | isnumeric() – True wenn Unicode-String nur numerische Zeichen |
| 15 | isspace() – True wenn nur Whitespace-Zeichen |
| 16 | istitle() – True wenn korrekt "titlecased" |
| 17 | isupper() – True wenn mind. 1 cased char und alle uppercase |
| 18 | join(seq) – Verbindet String-Repräsentationen von Elementen in seq mit Separator |
| 19 | len(string) – Gibt String-Länge zurück |
| 20 | ljust(width[, fillchar]) – Links ausgerichtet mit Padding auf width Spalten |
| 21 | lower() – Konvertiert Großbuchstaben zu Kleinbuchstaben |
| 22 | lstrip() – Entfernt führende Whitespaces |
| 23 | maketrans() – Erstellt Übersetzungstabelle für translate |
| 24 | max(str) – Maximaler alphabetischer Zeichen aus String |
| 25 | min(str) – Minimaler alphabetischer Zeichen aus String |
| 26 | replace(old, new[, max]) – Ersetzt old durch new (max-mal wenn angegeben) |
| 27 | rfind(str, beg=0, end=len(string)) – Wie find(), aber rückwärts suchen |
| 28 | rindex(str, beg=0, end=len(string)) – Wie index(), aber rückwärts suchen |
| 29 | rjust(width[, fillchar]) – Rechts ausgerichtet mit Padding auf width Spalten |
| 30 | rstrip() – Entfernt nachfolgende Whitespaces |
| 31 | split(str="", num=string.count(str)) – Teilt String nach Delimiter str (Space default) |
| 32 | splitlines(num=string.count('\n')) – Teilt an NEWLINEs, gibt Liste der Zeilen ohne NEWLINEs |
| 33 | startswith(str, beg=0, end=len(string)) – Prüft, ob String mit Substring str beginnt |
| 34 | strip([chars]) – Führt lstrip() und rstrip() aus |
| 35 | swapcase() – Kehrt Groß-/Kleinschreibung aller Buchstaben um |
| 36 | title() – "Titlecased" Version: jedes Wort beginnt groß, Rest klein |
| 37 | translate(table, deletechars="") – Übersetzt nach Tabelle (256 chars), entfernt del-Zeichen |
| 38 | upper() – Konvertiert Kleinbuchstaben zu Großbuchstaben |
| 39 | zfill(width) – Links mit Nullen auffüllen auf width Zeichen; für Zahlen, behält Vorzeichen |
| 40 | isdecimal() – True wenn Unicode-String nur Dezimalzeichen |
Python
- C# Strings meistern: Grundlagen, Operationen & fortgeschrittene Techniken
- Python-Operatoren meistern: Umfassender Leitfaden
- Python-Dictionaries meistern: Erstellung, Manipulation und fortgeschrittene Techniken
- 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
- Pythons enumerate() meistern: Schleifen mit Indizes für Listen, Tupel, Strings und Dictionaries