Le formatage d’une chaîne de caractères en Python dépend, comme tout programme, de son auteur.

Il existe en effet plusieurs façons de “formater”.

formatage chaîne caractères Python

Le formatage d’une chaîne de caractères en Python: c’est quoi?

Avant toute chose, il faut bien entendu se comprendre: le formatage d’une chaîne de caractères permet une syntaxe simplifiée de la chaîne de caractères.

Nous allons partir de l’exemple basique suivant:

name = input("Entrez votre nom: ")
print("Bonjour",name,end='.')

qui donne:

Entrez votre nom: toto
Bonjour toto.         

C’est la syntaxe la plus basique que l’on pourrait imaginer pour afficher une chaîne de caractères. Il y a toutefois une petite fioriture, histoire de rendre le résultat plus agréable (le point final).

La syntaxe f”…”

C’est le moyen le plus rapide et agréable pour formater un chaîne de caractères en Python. Regardons ce que cela donne sur un exemple:

name = input("Entrez votre nom: ")
print(f"Bonjour {name}.")

Quand il y a plusieurs variables, la syntaxe est tout aussi intuitive:

name = input("Entrez votre nom: ")
age = 105
print(f"Bonjour {name}. {age} ans, c'est plus tout jeune!")

La syntaxe %s

Une autre façon de voir le formatage d’une chaîne de caractères en Python est la syntaxe suivante:

name = input("Entrez votre nom: ")
print("Bonjour %s." % name)

C’est tout de même moins intuitif que la syntaxe précédente dès lors qu’il y a plusieurs variables :

name = input("Entrez votre nom: ")
age = 105
print("Bonjour %s. %s, c'est plus tout jeune!" % (name, age) )

Cette syntaxe est peu recommandée.

Le formatage d’une chaîne de caractères en Python: la fonction format

La fonction format est LA fonction de formatage par excellence, mais plutôt lourde pour la plupart des cas. Elle est plutôt utilisée pour des formatages élaborés.

Un exemple basique pour comprendre la syntaxe :

name = input("Entrez votre nom: ")
age = 105
print("Bonjour {}. {} ans, c'est plus tout jeune!".format(name,age))
Entrez votre nom: toto
Bonjour toto. 105 ans, c'est plus tout jeune!

Là où cela commence à devenir intéressant, c’est pour les formatages élaborés.

Le formatage d’une chaîne de caractères en Python: alignement à droite

dico = { 'Prénoms' : 'Âges' , 'Jean' : 78 , 'Paul': 68 , 'Ludovic': 98 , 'Simone': 95 , 'Raymonde': 79 }

e = 0
for name,age in dico.items():
    if e != 1:
        print( '{:>10} | {}' . format(name,age) )
    else:
        print('-----------------')
    e += 1
   Prénoms | Âges
 -----------------
      Paul | 68
   Ludovic | 98
    Simone | 95
  Raymonde | 79

Alignement à gauche

Si on souhaite aligner les prénoms à gauche, ce sera plutôt :

dico = { 'Prénoms' : 'Âges' , 'Jean' : 78 , 'Paul': 68 , 'Ludovic': 98 , 'Simone': 95 , 'Raymonde': 79 }

e = 0
for name,age in dico.items():
    if e != 1:
        print( '{:10} | {}' . format(name,age) )
    else:
        print('-----------------')
    e += 1
Prénoms    | Âges
-----------------
Paul       | 68
Ludovic    | 98
Simone     | 95
Raymonde   | 79

Combler les espaces vides

Si on veut compléter les espaces vides par des “.”, on fera :

dico = { 'Prénoms' : 'Âges' , 'Jean' : 78 , 'Paul': 68 , 'Ludovic': 98 , 'Simone': 95 , 'Raymonde': 79 }

for name,age in dico.items():
    print( '{:.<15} {}' . format(name,age) )
Prénoms........ Âges
Jean........... 78
Paul........... 68
Ludovic........ 98
Simone......... 95
Raymonde....... 79

Centrer le texte

Et si on veut centrer les prénoms, ce sera :

dico = { 'Prénoms' : 'Âges' , 'Jean' : 78 , 'Paul': 68 , 'Ludovic': 98 , 'Simone': 95 , 'Raymonde': 79 }

for name,age in dico.items():
    print( '{:^15} {:^5}' . format(name,age) )
  Prénoms     Âges  
   Jean        78   
   Paul        68  
  Ludovic      98  
  Simone       95 
 Raymonde      79 

Tronquer un texte

dico = { 'Prénoms' : 'Âges' , 'Jean' : 78 , 'Paul': 68 , 'Ludovic': 98 , 'Simone': 95 , 'Raymonde': 79 }

for name,age in dico.items():
    print( '{:.3}. {:^4}' . format(name,age) )
Pré. Âges
Jea.  78 
Pau.  68 
Lud.  98 
Sim.  95 
Ray.  79 

Formater un nombre

from math import pi

c = 45
d = 0.0000000000000012

print('{:05d}'.format(c))
print('{:10.4f}'.format(pi))
print('{:16E}'.format(d))
print('{:16e}'.format(d))
00045
    3.1416
    1.200000E-15
    1.200000e-15

Dans la ligne 6, on formate le nombre de sort qu’il tienne sur 5 caractères, et que les premières espaces doivent être comblées par des “0”. Le “d” indique qu’il s’agit d’un entier décimal (en base 10).

Dans la ligne 7, on indique que le nombre doit tenir sur 10 caractères, dont 4 sont réservés pour la partie décimale. Le “f” indique qu’il s’agit d’un nombre de type “float”.

En ligne 8 et 9, on indique que l’on souhaite écrire le nombre en écriture scientifique, en réservant 16 caractères.

Pour plus d’informations sur la fonction format, n’hésitez pas à consulter la doc officielle : https://docs.python.org/fr/3.9/library/string.html#formatspec.

[Retour à la page précédente]