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”.
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.