6.1.3.1. Mini-langage de spécification de format¶
Les « spécifications de format » sont utilisées pour les champs de remplacement contenus dans une chaîne de format pour définir comment la valeur doit être représentée (voir Syntaxe de formatage de chaîne). Elles peuvent également être passées directement à la primitive format(). Chaque type formatable peut définir comment interpréter la spécification de format.
La plupart des primitives implémentent les les options suivantes, même si certaines options de formatage ne sont supportées que pour les types numériques.
Une convention généralement admise est qu’une chaîne vide ("") produit le même résultat que si vous aviez appelé str() sur la valeur. Une chaîne de format non vide modifie typiquement le résultat.
La forme générale d’un spécificateur de format standard est :
format_spec ::= [[fill]align][sign][#][0][width][,][.precision][type]
fill ::=
align ::= « » | « = » | « ^ »
sign ::= « + » | « - » | » «
width ::= integer
precision ::= integer
type ::= « b » | « c » | « d » | « e » | « E » | « f » | « F » | « g » | « G » | « n » | « o » | « s » | « x » | « X » | « % »
Si une valeur align valide est spécifiée, la valeur peut être représentée par un caractère fill de remplissage qui peut être n’importe quel caractère et qui vaut espace par défaut si il est omis. Il est impossible d’utiliser un littéral “accolade” (« { » ou « } ») en tant que caractère fill quand la méthode str.format() est utilisée. Cependant, il est possible d’insérer une accolade avec un champ de remplacement imbriqué. Cette limite n’affecte pas la fonction format().
Le sens des différentes options d’alignement est donné comme suit :
Option
Signification
'
Force le champ à être aligné à gauche dans l’espace disponible (c’est le spécificateur par défaut pour la plupart des objets).
'>'
Force le champ à être aligné à droite dans l’espace disponible (c’est le spécificateur par défaut pour les nombres).
'='
Forces the padding to be placed after the sign (if any)
but before the digits. This is used for printing fields
in the form “+000000120”. This alignment option is only
valid for numeric types. It becomes the default when “0”
immediately precedes the field width.
'^'
Force le champ à être centré dans l’espace disponible.
Notons que la longueur du champ est toujours égale à la la taille nécessaire pour remplir le champ avec l’objet à moins que la valeur minimum ne soit précisée. Ainsi, si aucune valeur n’est précisée, l’option d’alignement n’a aucun sens.
L’option sign est uniquement valide pour les type numériques, et peut valoir :
Option
Signification
'+'
Indique que le signe doit être affiché pour les nombres tant positifs que négatifs.
'-'
Indique que le signe doit être affiché uniquement pour les nombres négatifs (c’est le comportement par défaut).
espace
Indique qu’un espace doit précéder les nombres positifs et qu’un signe moins doit précéder les nombres négatifs.
L’option '#' impose l’utilisation de la « forme alternative » pour la conversion. La forme alternative est définie différemment pour différent types. Cette option est uniquement valide pour les types entiers flottants, complexes, et décimaux. Pour les entiers, quand l’affichage binaire, octal ou hexadécimal est utilisé, cette option ajoute le préfixe '0b', '0o', ou '0x' à la valeur affichée. Pour les flottants, les complexes, et les décimaux, la forme alternative impose que le résultat de la conversion contienne toujours une virgule, même si aucun chiffre ne vient après. Normalement, une virgule apparaît dans le résultat de ces conversions seulement si un chiffre le suit. De plus, pour les conversions 'g' et 'G', les zéros finaux ne sont pas retirés du résultat.
L’option ',' signale l’utilisation d’une virgule comme séparateur des milliers. Pour un séparateur conscient de l’environnement linguistique, utilisez plutôt le type de présentation entière 'n'.
Modifié dans la version 3.1:Ajout de l’option ',' (voir PEP 378).
width est un entier en base 10 qui définit la longueur minimale du champ. Si elle n’est pas spécifiée, alors le champ width est déterminé par le contenu.
When no explicit alignment is given, preceding the width field by a zero
('0') character enables
sign-aware zero-padding for numeric types. This is equivalent to a fill
character of '0' with an alignment type of '='.
La valeur precision est un nombre en base 10 indiquant combien de chiffres doivent être affichés après la virgule pour une valeur à virgule flottante formatée avec 'f' ou 'F', ou avant et après le point-décimal pour une valeur à virgule flottante formatée avec 'g' ou 'G'. Pour les types non numériques, ce champ indique la taille maximale du champ - autrement dit, combien de caractères du champ sont utilisés. Le spécificateur precision n’est pas autorisé sur les entiers.
Finalement, le spécificateur type détermine comment la donnée doit être représentée.
Les types disponibles de représentation de chaîne sont :
Type
Signification
's'
Format de chaîne. C’est le type par défaut pour les chaînes de caractères et peut être omis.
None
Paril que 's'.
Les types disponibles de représentation d’entier sont :
Type
Signification
'b'
Format binaire. Affiche le nombre en base 2.
'c'
Caractère. Convertit l’entier en le caractère unicode associé avant de l’afficher.
'd'
Entier décimal. Affiche le nombre en base 10.
'o'
Format octal. Affiche le nombre en base 8.
'x'
Format hexa(décimal). Affiche le nombre en base 16 en utilisant les lettres minuscules pour les chiffres au-dessus de 9.
'X'
Format hexa(décimal). Affiche le nombre en base 16 en utilisant les lettres majuscules pour les chiffres au-dessus de 9.
'n'
Nombre. Pareil que 'd' si ce n’est que l’environnement linguistique est utilisé afin de déterminer le séparateur de nombres approprié.
None
Pareil que 'd'.
In addition to the above presentation types, integers can be formatted
with the floating point presentation types listed below (except
'n' and None). When doing so, float() is used to convert the
integer to a floating point number before formatting.
les types de représentation pour les nombres flottants et les valeurs décimales sont :
Type
Signification
'e'
Notation par exposant. Affiche le nombre dans sa notation scientifique en utilisant la lettre “e” pour indiquer l’exposant. La précision par défaut est 6.
'E'
Notation par exposant. Pareil que 'e' sauf l’utilisation de la lettre majuscule “E” comme séparateur.
'f'
Virgule fixe. Affiche le nombre comme un nombre à virgule fixe. La précision par défaut est 6.
'F'
Virgule fixe. Pareil que 'f' à part nan qui devient NAN et inf qui devient INF.
'g'
Format général. Pour une précision donnée p >= 1, ceci arrondit le nombre à p chiffres significatifs et puis formate le résultat soit en virgule fixe soit en notation scientifique, en fonction de la magnitude.
Les règles précises sont les suivantes : supposons que le résultat formaté avec le type de représentation 'e' et une précision 1 ait un exposant exp. Alors, si -4 <= exp <= p, le nombre est formaté avec le type de représentation 'f' et une précision p-1-exp. Sinon, le nombre est formaté avec le type de représentation 'e' et une précision p-1. Dans les deux cas, les zéros finaux et non significatifs sont retirés, et la virgule est également retirée s’il n’y a aucun chiffre la suivant.
Les valeurs suivantes : infini négatif, infini positif, zéro positif, zéro négatif, nan sont formatées respectivement par inf, -inf, 0, -0 et nan, peu importe la précision.
Une précision de 0 est interprétée comme une précision de 1. La précision par défaut est 6.
'G'
Format général. Pareil que 'G' si ce n’est que 'E' est utilisé si le nombre est trop grand. Également, la représentation des infinis et de Nan sont en majuscules également.
'n'
Nombre. Pareil que 'g', si ce n’est que l’environnement linguistique est pris en compte pour insérer le séparateur approprié.
'%'
Pourcentage. Multiplie le nombre par 100 et l’affiche en virgule fixe ('f'), suivi d’un symbole pourcent '%'.
None
Pareil que 'g', si ce n’est que lorsque la notation en virgule fixe est utilisée, il y a toujours au moins un chiffre derrière la virgule. La précision par défaut celle nécessaire pour afficher la valeur donnée. L’effet visé est de le faire correspondre à la valeur retournée par str() altérée par les autres modificateurs de format.