it:programmiersprache:python:strings

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
it:programmiersprache:python:strings [23.08.2025 08:36] – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1it:programmiersprache:python:strings [23.08.2025 08:36] (aktuell) – ↷ Links angepasst, weil Seiten im Wiki verschoben wurden marsch
Zeile 1: Zeile 1:
 +====== Strings ======
  
 +<wrap em hi>Ab Python 2.0</wrap> [[https://www.python.org/dev/peps/pep-0100/|PEP 100]]
 +Strings '' 'a string' '' kann als Unicode angegeben werden '' u'unicode string' ''.
 +
 +
 +===== Formatierung =====
 +
 +==== printf-Style ====
 +
 +Formatierung im Stil von ''printf()'' aus C.
 +
 +<WRAP group>
 +<WRAP half column>
 +
 +<code python>
 +print('Ein String mit %(name)03s format' % (Tupel mit Werten))
 +</code>
 +
 +</WRAP><WRAP half column>
 +
 +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
 +
 +</WRAP>
 +</WRAP>
 +
 +<WRAP center round info 60%>
 +**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
 +<code python>
 +logger.info("Value {} is to high".format(i))
 +</code>
 +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 //<wrap :en>loggings</wrap>// 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
 +<code python>
 +logger.info("Value %d is to high", i)
 +</code>
 +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.
 +</WRAP>
 +
 +
 +
 +==== .format()-Style ====
 +
 +Formatierung mit ''str.format''
 +
 +<WRAP group>
 +<WRAP half column>
 +
 +<code python>
 +print('Ein String {} mit Format'.format())
 +</code>
 +
 +</WRAP><WRAP half column>
 +
 +Sehr leistungsfähig.
 +</WRAP>
 +</WRAP>
 +
 +
 +==== Templates ====
 +
 +Formatierung mit Template-Strings <wrap info>[[https://www.python.org/dev/peps/pep-0292|PEP 292]]</wrap>
 +
 +<WRAP group>
 +<WRAP half column>
 +
 +<code python>
 +s = '$blah und $blub'
 +s.substitue(blah='Hinz', blub='Kunz')
 +</code>
 +
 +</WRAP><WRAP half column>
 +
 +Beschreibung
 +
 +</WRAP>
 +</WRAP>
 +
 +
 +==== f-Strings ====
 +
 +
 +<WRAP group>
 +<WRAP half column>
 +
 +<wrap info>Ab Python 3.5.3, [[https://www.python.org/dev/peps/pep-0498/|PEP 498]]</wrap>
 +String Formatierung mit
 +
 +<code python>
 +f'A String {} with format'
 +</code>
 +
 +</WRAP><WRAP half column>
 +
 +Beschreibung
 +
 +</WRAP>
 +</WRAP>
 +
 +
 +[[it:programmiersprache:python:exkurs:pfade:start|Exkurs Pfade]]