Python String (str) (C) 2020-2025 T.Birnthaler OSTC GmbH
===================
Doku --> docs.python.org/3/library/stdtypes.html#str
docs.python.org/3/library/stdtypes.html#string-methods
Strings in Python sind seit Python 3.0 Sequenzen von Unicode-Einzelzeichen
codiert im Format UTF-8, d.h. jedes Zeichen belegt 1-4 Bytes. In Python 2.X
wurden Strings noch durch Einzelbyte-Zeichen dargestellt (z.B. ISO-8859).
Die String-Quotierungen "..." und '...' haben die exakt gleiche Bedeutung,
Python selbst stellt per repr() erzeugte Strings in der Form '...' dar.
"hallo welt" # Unicode-String (in P3 automatisch)
u"hallo welt" # Unicode-String (in P2 notwendig, in P3 Standard)
U"hallo welt" # Unicode-String (in P2 notwendig, in P3 Standard)
"" # Leerer String
Folgende LESENDEN Sequenz-Operationen werden von Strings unterstützt (R, S, T,
X sind Strings, I, N sind Ganzzahlen, C ist ein Zeichen, D ist ein Dictionary,
L ist eine Liste von Strings, ENC ist ein Encoding):
ACHTUNG: String S bleibt UNVERÄNDERT, neuer String kommt als Ergebnis zurück.
(ergibt sich aus der im-mutable Eigenschaft von Strings).
+-----------------------+------------------------------------------------------+
| Operation | Bedeutung |
+-----------------------+------------------------------------------------------+
| for E in S: ... | Alle Zeichen E von S nach Index geordnet durchlaufen |
+-----------------------+------------------------------------------------------+
| T in S | Substring T in S enthalten |
| T not in S | Substring T nicht in S enthalten |
+-----------------------+------------------------------------------------------+
| S + T | Verkettung von S und T |
| S * N N * S | String S N-mal vervielfachen |
+-----------------------+------------------------------------------------------+
| S[I] | Zeichen mit Index I (Start bei 0) |
| S[I:J] | Substring von Index I bis J-1 (mit Schrittweite 1) |
| S[I:J:K] | Substring von Index I bis J-1 mit Schrittweite K |
+-----------------------+------------------------------------------------------+
| S == T | Strings S und T gleich? |
| S != T | Strings S und T ungleich? |
+-----------------------+------------------------------------------------------+
| S < T | S alphabetisch kleiner T (lexikografisch!) | Unicode!
| S <= T | S alphabetisch kleiner gleich T (lexikografisch!) | Unicode!
| S > T | S alphabetisch größer T (lexikografisch!) | Unicode!
| S >= T | S alphabetisch größer gleich T (lexikografisch!) | Unicode!
+-----------------------+------------------------------------------------------+
| len(S) | Länge von S (Anzahl Zeichen) |
+-----------------------+------------------------------------------------------+
| min(S) | Kleinstes Zeichen in S (gemäß Vergleich "<") |
| max(S) | Größtes Zeichen in S (gemäß Vergleich "<") |
+-----------------------+------------------------------------------------------+
| reversed(S) | Zeichen in umgekehrter Reihenfolge (Iterator) |
| sorted(S,key, | Sortierte Liste der Zeichen (gemäß Vergleich "<") |
| reverse) | (key=MAPFUNC, reverse=True --> absteigend) |
+-----------------------+------------------------------------------------------+
Folgende LESENDEN String-Funktionen sind für Strings verfügbar:
ACHTUNG: String S bleibt UNVERÄNDERT, neuer String kommt als Ergebnis zurück
(ergibt sich aus der im-mutable Eigenschaft von Strings).
+-----------------------+------------------------------------------------------+
| Funktion | Bedeutung |
+-----------------------+------------------------------------------------------+
| S.lower() U | Kleinschreibung |
| S.upper() U | Großschreibung |
| S.swapcase() U | Groß/Kleinschreibung vertauschen |
| S.capitalize() U | 1. Buchstaben groß schreiben, Rest klein |
| S.title() U | Alle Worte beginnen mit Großbuchstaben, Rest klein |
| S.casefold() U | Aggressiveres lower() (z.B. "ß" --> "ss") 3.3 |
+-----------------------+------------------------------------------------------+
| S.startswith(T[,I[,N]]| Beginnt mit T (ab Position I, Länge N) |
| S.endswith(T[,I[,N]] | Endet mit T (ab Position I, Länge N) |
+-----------------------+------------------------------------------------------+
| S.count(T[,I[,N]]) | Anzahl Vorkommen von T (ab Position I, Länge N) |
| S.find(T[,I[,N]]) | Von links Treffer-Index von T finden (-1 falls nein) |
| S.index(T[,I[,N]]) | Wie S.find(), ValueError statt -1 falls kein Treffer |
| S.rfind(T[,I[,N]]) | Von rechts Treffer-Index von T finden (-1 falls nein)|
| S.rindex(T[,I[,N]]) | Wie S.rfind(), ValueError statt -1 falls kein Treffer|
+-----------------------+------------------------------------------------------+
| S.isspace() U | Besteht nur aus Leerraum (mind. 1) |
| S.isascii() | Besteht nur aus ASCII-Zeichen 0-127 (oder leer) |
| S.isidentifier() | Gültiger Python-Bezeichner (--> keyword.iskeyword()) |
| S.isprintable() U | Alle Zeichen in repr() ausdruckbar (oder leer) |
+-----------------------+------------------------------------------------------+
| S.isalpha() U | Besteht nur aus Buchstaben (mind. 1) |
| S.isdecimal() U | Besteht nur aus Ziffern (Dezimalziffern, mind. 1) | 1
| S.isdigit() U | Besteht nur aus Ziffern (Fraction/Superscript, m. 1) | 2
| S.isnumeric() U | Besteht nur aus Ziffern (römische, mind. 1) | 3
| S.isalnum() U | Besteht nur aus Buchstaben oder Ziffern (mind. 1) |
| | (isalpha + isdecimal + isdigit + isnumeric) |
+-----------------------+------------------------------------------------------+
| S.islower() U | Besteht nur aus Kleinbuchstaben (mind. 1) |
| S.isupper() U | Besteht nur aus Großbuchstaben (mind. 1) |
| S.istitle() U | Alle Worte beginnen mit Großbuchstaben, Rest klein |
+-----------------------+------------------------------------------------------+
| S.removeprefix(T) | Falls S mit T beginnt, T entfernen 3.9 |
| S.removesuffix(T) | Falls S mit T endet, T entfernen 3.9 |
+-----------------------+------------------------------------------------------+
| S.lstrip([T]) | Beliebig viel Leerraum/Zeichen T links entfernen |
| S.rstrip([T]) | Beliebig viel Leerraum/Zeichen T rechts entfernen |
| S.strip([T]) | Beliebig viel Leerraum/Zeichen T links+rechts entf. |
+-----------------------+------------------------------------------------------+
| S.center(N[,C]) | Zentriert in Breite N mit Füllz. C (STD: Leerz.) |
| S.ljust(N[,C]) | Linksbündig in Breite N mit Füllz. C (STD: Leerz.) |
| S.rjust(N[,C]) | Rechtsbündig in Breite N mit Füllz. C (STD: Leerz.) |
| S.zfill(N) | Links in Breite N mit "0" auffüllen |
+-----------------------+------------------------------------------------------+
| S.join(L) | Verketten der Elemente in L getrennt durch S |
| S.split(T[,MAX]) | Zerlegen von links anhand T (alle/MAX) |
| S.rsplit(T[,MAX]) | Zerlegen von rechts anhand T (alle/MAX) |
| S.splitlines( | Zerlegen anhand Zeilentrenner \n \r \r\n \f \v ... |
| keepends=False) | (Zeilenenden entfernen oder erhalten) |
+-----------------------+------------------------------------------------------+
| S.partition(T) | Zerlegen in (Head, T, Tail) am ersten T von links |
| S.rpartition(T) | Zerlegen in (Head, T, Tail) am ersten T von rechts |
+-----------------------+------------------------------------------------------+
| S.replace(T,R[,MAX]) | T durch R ersetzen (alle oder Anzahl MAX) |
| S.translate(D) | Zeichen-Key in D durch Value ersetzen oder löschen |
| S.make_trans(D) | (Übersetzungs-Tabelle für translate() erstellen) |
| S.make_trans(S,T[,X]) | (Übersetzungs-Tabelle für translate() erstellen) |
| S.expandtabs(N) | Tabulatoren (Breite N) durch Leerzeichen ersetzen |
+-----------------------+------------------------------------------------------+
| S.decode(ENC,ERR) | Decodieren gemäß Codierung ENC |
| S.encode(ENC,ERR) | Codieren gemäß Codierung ENC |
+-----------------------+------------------------------------------------------+
| F"S" | {var}-Platzhalter in S ersetzen durch Wert von var |
| S.format(*args,**kwa) | {}-Platzhalter in S ersetzen durch Werte in (...) |
| S.format_map(...) | Analog, aber **kwargs wird nicht in dict kopiert |
| S % (...) | %-Platzhalter in S ersetzen durch Werte in (...) |
+-----------------------+------------------------------------------------------+
* HINWEIS: Kürzel "U" --> durch den Unicode-Standard definiert.
* func(T[,I[,N]]) steht für: VON Index I (Std: 0) bis VOR Index N (Std: len(T))
(,I,N oder ,N können auch fehlen).
* MAX steht für Anzahl Stücke MAXIMAL, sonst ALLE Stücke erzeugen/ersetzen.
* ERR kann "strict", "ignore", "replace" und "xmlcharrefreplace" sein. TODO
* Unterschied --> Mostly about Unicode classification
isdecimal() <= isdigit() <= isnumeric()
True True True # 10-System Ziffern: "038" "੦੩੮" "038"
False True True # Fractions/Superscripts: "⁰³⁸", "🄀⒊⒏", "⓪③⑧""
False False True # Römische Zahlen: "↉⅛⅘", "ⅠⅢⅧ", "⑩⑬㊿", "壹貳參"
False False False # Alles andere "abc", "38.0", "-38"
* split() und rsplit() ohne Argument zerlegen den String an WHITESPACE
(führende und abschließende Whitespaces werden dabei ignoriert).
* Leerraum (WHITESPACE) ist eine beliebig lange Folge folgender Zeichen:
+-----+----+------------------------+---------------------------------+
| \t | 9 | Horizontaler Tabulator | Zur nächsten Tabulator-Position |
| \n | 10 | Newline | Zu nächster Zeile |
| \v | 11 | Vertikaler Tabulator |
| \f | 12 | Form Feed | Seitenvorschub (Drucker) |
| \r | 13 | Carriage Return | Zum Zeilenanfang |
| " " | 32 | Space | Leerzeichen |
+-----+----+------------------------+---------------------------------+