Mettre en forme des chaînes de caractères en Python

Dans cette page, vous apprendrez à mettre en forme des chaînes de caractères. Ceci est utile notamment pour l’affichage des nombres. Par exemple, si vous voulez afficher un montant en euros avec deux chiffres après la virgule.

Cette page est inspirée par les sites https://pyformat.info/ et https://python.sdv.univ-paris-diderot.fr/03_affichage/.

Exemple

[1]:
montant = 21
print( "Le montant est {:.2f} euros".format(montant) )
Le montant est 21.00 euros

Comment préciser la mise en forme avec format ?

Pour préciser la mise en forme d’une chaîne de caractères, on utilise la méthode format().

Dans un premier exemple, nous allons chercher à afficher la valeur d’une variable au sein d’une chaîne de caractères. On précise la position où doit apparaître la valeur grâce à des accolades {} et on indique la variable comme argument de la méthode format().

Exemple

[1]:
a = 5
print( "La valeur est {} et nous l'avons affichée".format(a) )
La valeur est 5 et nous l'avons affichée

Il est possible d’afficher plusieurs variables :

[3]:
b = 8
print( "Les valeurs sont {} et {}".format(a, b) )
Les valeurs sont 5 et 8

Si on souhaite préciser un format pour la chaîne produite, on utilise : suivi des paramètres de formatage.

Par exemple, il est possible d’indiquer un nombre entier qui précise le nombre de caractères de la chaîne utilisée pour afficher la valeur transmise à format.

Exemple

[4]:
print( "Les valeurs sont {:10} et {:10}".format(a, b) )
Les valeurs sont          5 et          8

Ici la valeur de a est affichée en occupant 10 caractères.

Pour bien comprendre cela, nous allons générer la chaîne de caractères correspondante et vérifier que sa longueur est bien 10.

[5]:
t = "{:10}".format(5)
type(t)
[5]:
str

Nous voyons donc que l’instruction "{:10}".format(5) a bien renvoyé une chaîne de caractères.

[6]:
len(t)
[6]:
10

Ceci confirme que la chaîne contenue dans t est constituée de 10 caractères.

Alignement

Il est possible d’aligner à gauche en utilisant le signe inférieur <.

[7]:
print( "Les valeurs sont {:<10} et {:<10}".format(a, b) )
Les valeurs sont 5          et 8

Pour centrer, on utilise le caractère ^.

[8]:
print( "Les valeurs sont {:^10} et {:^10}".format(a, b) )
Les valeurs sont     5      et     8

Formatage d’un nombre à virgule (float)

Si on veut formater l’affichage d’un nombre à virgule (float), on utilise le caractère f dans l’accolade.

Il est possible d’indiquer :X.YfX précise la longueur de la chaîne de caractères produite et Y le nombre de chiffres après la virgule.

[9]:
print( "La valeur est {}".format(123.12345) )
print( "La valeur formatée est {:10.2f}".format(123.12345) )
La valeur est 123.12345
La valeur formatée est     123.12

Si on n’indique pas de valeur pour X entre les deux-points : et le point ., la longueur de la chaîne s’adapte au nombre de caractères à afficher. On utilise alors seulement Y pour préciser le nombre de chiffres après la virgule en indiquant :.Yf.

[10]:
print( "La valeur formatée est {:.2f}".format(123.12345) )
La valeur formatée est 123.12

Il est également possible d’aligner à gauche ou de centrer avec les caractères < et ^ comme précédemment.

[11]:
print("Les valeurs sont {:<10.2f} et {:^10.2f} avec alignement".format(123.12345, 123.12345) )
Les valeurs sont 123.12     et   123.12   avec alignement