La commande str.format() permet de construire une chaîne de caractère dépendante du contenu de certaines variables. Cette méthode s'applique à une chaîne de caractère qui sert de format, et les arguments sont les variables appelées dans le format. Dans l'exemple ci-dessous, la variable nom contient la chaîne de caractères "toto". Le format "Je m'appelle {0}" fait appel à un argument à insérer (le premier argument, notée {0}), et qui sera remplacée par le contenu de la variable nom.
nom="toto"
"je m'appelle {0}".format(nom)
Pour finalement former la phrase : "Je m'appelle toto".
Il peut y avoir plusieurs variables. Lorsque les variables sont simples, la fonction conduit à une phrase comme par exemple :
T=10
temps="pluvieux"
"il fait {0:3.0f} degres et le temps est {1:s}.".format(T,temps)
conduit à la phrase il fait 10 degres et le temps est pluvieux. Les symboles {0:3.0f} et {1!s} sont remplacés par les variables 1 et 2 (indices 0 et 1), au format 3.0f pour le nombre et s pour la chaîne de caractères (voir la description des formats ci-après).
Pour la mise en forme de tableau, l'opération de formatage doit être répétée à chaque ligne, par une boucle for tel que dans l'exemple suivant. La fonction zip permet de grouper les tableaux.
x1=[1,2,3,4]
x2=[5,6,7,8]
x3=[9,10,11,12]
for xx,yy,zz in zip(x1,x2,x3):
print("{:f} ; {:f} ; {:f}".format(xx,yy,zz))
La boucle renvoie le résultat suivant :
1.000000 ; 5.000000 ; 9.000000Les explications ci-dessous n'ont pas vocation à se substituer à la documentation (plus complète) mais permettent de s'initier rapidement aux cas les plus fréquemment rencontrés.
Le format peut contenir toute chaine de caractère et des balises {} permettant d'insérer les arguments de la fonction format. Si rien n'est spécifié, les appels successifs de balises insèrent les arguments dans l'ordre. Pour préciser, {0}, {1}, {2}, etc font respectivement appel aux premier, deuxième, troisième argument, etc.
Le caractère ":" permet de spécifier le format de conversion. S'il est absent, Python fait au mieux, mais il est possible d'imposer précisement le format d'affichage avec la syntaxe suivante.
xx 10xx
xx+010xx
xx 5.300xx
xxcoucou xx
xx**coucouxx