Dies ist eine alte Version des Dokuments!
Strings
Literale
Literale sind textuelle Angaben von konstanten Werten. Zum Beispiel
i: int = 17 pi: float = 3.14 name: str = "Walter"
gibt Wert einer Variablen an.
- Variable
ivom Typinthat den Wert17. Der Text17ist der Literal für den numerischen Wert 17. - Variable
pivom Typfloathat den Wert3.14. Der Text3.14ist der Literal für den numerischen Wert 3.14. - Variable
namevom Typstrhat den WertWalter. Der Text„Walter“ist der Literal für den Namen Walter.
u-Präfix (Unicode)
Der Python Quelltext (vor Python 3.0) eines Programms wird gemäß dem ASCII Zeichensatz abgelegt. Wenn man mal von Sonderzeichen wie zum Beispiel den deutschen Umlauten (Ä,Ö,Ü, …) absieht, kann der Text auch in Unicode (UTF-8) abgelegt werden, da dieser in weiten Bereichen mit dem ASCII Zeichensatz übereinstimmt. Das gilt natürlich nicht für alle Werte die ein Byte [0 … 255] annehmen kann um ein Zeichen aus dem ASCII Zeichensatz darzustellen.
Strings die allerdings Unicode Zeichen enthalten, etwa zur String Ausgabe, können in Form eines Strings mit einem Präfix u bzw. U angegeben werden. Etwa : '' u'Schöne neue Welt!' ''.
Ab Python 3.0 ist die Angabe eines String-Literalsu''obsolete, da der Python Quelltext (ab Python 3.0) selbst in Unicode (UTF-8) erfasst wird.
b-Präfix (bytes)
Zur Angabe eines String-Literals für Byte-Folgen ab Python 3.1 - nicht aber in Python 2.7 übernommen.
Formatierung
Oder auch Stringinterpolation (string interpolation oder string substitutions) genannt, dient dazu eine Textausgabe zu machen in der Werte von Variablen oder Konstanten eingebettet werden.
Mit % (Modulo-Operator)
Ab Python 1.0
Formatierung im Stil von printf() aus C.
Code
print('Ein String mit %(name)03s format' % (Tupel mit Werten))
Beschreibung
Beinhaltet:
- '%' als Einleitung einer Formatangabe
- Optional: einen Bezeichner in runden Klammern '(name)'.
- Optional: Konvertierungsflags
- Optional: Minimum Feldbreite
- Optional: Präzision mit einem Punkt ('.') beginnend
- Optional: Längenmodifizierer
- Konvertierungstyp
Info
Auch wenn diese Art der Formatierung schon in die Jahre gekommen ist, so ist sie doch im Bezug zum Python Logger noch recht bedeutsam.
Mit
logger.info("Value {} is to high".format(i))
wird zwar ein Wert (hier i) in den String eingearbeitet, aber das jedes mal wenn ein solcher Log-Eintrag gemacht werden soll. Nun kann man beim Logger aber das Level des loggings wählen, sodaß der formatierte String nicht ausgegeben werden muss. Das gilt auch für die durchaus schnell formatierten f-Strings. Das ist vergeudete Zeit.
Mit dem alten Format
logger.info("Value %d is to high", i)
wird der String und seine Parameter (Tuple) zwar an den Log-Aufruf übergeben, jedoch wird eine Formatierung des Ausgabestrings nicht durchgeführt, sollte das Level entsprechend gesetzt sein.
$-Präfix
Code
Beschreibung
Templates
Formatierung mit Template-Strings
Code
from string import Template s = '$blah und $blub' s.substitue(blah='Hinz', blub='Kunz')
Beschreibung
.format()-Style
Formatierung mit str.format()
Code
print('Ein String {} mit Format'.format())
Beschreibung
Sehr leistungsfähig.
f-Präfix
String Formatierung mit
Code
f'A String {} with format'
Beschreibung
t-Präfix
String Formatierung mit t-Präfix. Es besteht eine Ähnlichkeit mit f-Präfix, jedoch bleibt der Platzhalter im String erhalten und kann wiederverwendet werden.
Code
t'A String {} with format'
Beschreibung
Der Präfix ist ein t oder ein T das vorangestellt wird.