Formate in Python (Formate in Python), Lektion, Seite 723887
https://www.purl.org/stefan_ram/pub/formate_python (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Python-Kurs

Formatierende Zeichenfolgenliterale in Python 

Eine formatierendes Zeichenfolgenliteral beginnt mit einem »f« und wird in vielen Fällen wie ein Zeichenfolgenliteral ohne »f« interpretiert.

Auswertung
f'abc'
'abc'

Auswertungen  innerhalb von Zeichenfolgenliteralen

In geschweiften Klammern enthaltene Zeichenfolgen werden als Ausdrücke  interpretiert. Diese Ausdrücke werden ausgewertet, ihr Wert wird dann mit »str« als Zeichenfolge dargestellt und an der Stelle der geschweiften Klammern eingefügt.

Auswertung
f'abc{ 1 + 1 }'
'abc2'
Auswertung
f'abc{1+1}'
'abc2'

Gleichzeitige Darstellung von Ausdruck und Wert

Folgt dem Ausdruck in den geschweiften Klammern ein Gleichheitszeichen, so wird zuerst der Ausdruck, dann ein Gleichheitszeichen  und dann die str-Darstellung des Wertes  des Ausdrucks eingefügt.

Auswertung
f'abc{1+1=}'
'abc1+1=2'
Auswertung
f'abc{ 1 + 1 = }'
'abc 1 + 1 = 2'

Formatierungsspezifikationen

Vor der schließenden geschweiften Klammer kann noch eine durch einen Doppelpunkt eingeleitete Formatierungsspezifikation stehen. ».3f« verlangt eine Darstellung des Wertes ohne die Exponentialschreibweise und mit drei Nachkommastellen.

Konsolenprotokoll

from math import pi

f'{pi}'

'3.141592653589793'
Konsolenprotokoll

from math import pi

f'{pi=}'

'pi=3.141592653589793'
Konsolenprotokoll

from math import pi

f'{pi:.3}'

'3.142'
Konsolenprotokoll

from math import pi

f'{pi=:.3}'

'pi=3.142'

Bei Angabe von Nachkommastellen kann das »f« auch entfallen. Das folgende Beispiel zeigt, daß die Python -Implementation ein Zehntel mit dem Datentyp ›float‹ nur näherungsweise darstellen kann.

Konsolenprotokoll
f'{1/10=:.20}'
'1/10=0.10000000000000000555'

Ein »x« verlangt die Darstellung im Hexadezimalsystem.

Konsolenprotokoll
f'{20:x}'
'14'
Konsolenprotokoll
f'{"abcdef":<10}'
'abcdef    '
Konsolenprotokoll
f'{"abcdef":>10}'
'    abcdef'
Konsolenprotokoll
f'{"abcdef":10}'
'abcdef    '
Konsolenprotokoll
f'{"abcdef":.3}'
'abc'
Konsolenprotokoll
f'{"abcdef":10.3}'
'abc       '

Die Spezifikator »d« (an Stelle von »f«) formatiert ganze  Zahlen.

Konsolenprotokoll
f"{1000:d}"
'1000'

Der Spezifikator »n« wirkt wie »d«, verwendet aber das Gebietsschema zur Formatierung, wie das folgende Beispiel zeigt.

deutsches Schema

from locale import setlocale, LC_ALL

setlocale( LC_ALL, 'de' )

'de'
f"{1000:n}"
'1.000'
englisches Schema

from locale import setlocale, LC_ALL

setlocale( LC_ALL, 'en' )

'en'
f"{1000:n}"
'1,000'

Morphologie

Morphologisches Diagramm (leicht vereinfacht)

f_string

|-|---.------------------.--->|-|
^ |
| .---------. |
'---| f_entry |<---'
'---------'

f_entry

.--------------.
|-|---.------>| literal_char |-----.--->|-|
| '--------------' ^
| .--. |
'----------->( {{ )----------'
| '--' |
| .--. |
'----------->( }} )----------'
| '--' |
| .-------------------. |
'--->| replacement_field |---'
'-------------------'

literal_char

.-----------------------.
|-|--->| Jedes Zeichen ausser |--->|-|
| geschweiften Klammern |
'-----------------------'

replacement_field

.-----------------------.
.-. .----------. | .--------------. v .-.
|-|--->( { )--->| Ausdruck |---'--->| Formatierung |---'--->( } )--->|-|
'-' '----------' '--------------' '-'

Formatierung

.-------------------.
|-|---.--->| literal_char |---.--->
| '-------------------' ^
| .-------------------. |
'--->| replacement_field |---'
'-------------------'

Quellen

Quelle

The Python Language Reference, Release 3.8.0a0, section 2.4.3 Formatted string literals

The Python Library Reference, Release 3.9.0a3, section 6.1.3 Format String Syntax

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram723887 stefan_ram:723887 Formate in Python Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723887, slrprddef723887, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/formate_python