Python String Formatting

(Sponsors) Commencez à apprendre Python avec le tutoriel gratuit Intro to Python de DataCamp. Apprenez la science des données en réalisant des défis de codage interactifs et en regardant des vidéos réalisées par des instructeurs experts. Commencez maintenant !

Mise à jour le 07 janv. 2020

La méthode format() vous permet de formater une chaîne de caractères de la manière que vous voulez.

Syntaxe : template.format(p1, p1, .... , k1=v1, k2=v2)

Le modèle est une chaîne de caractères contenant des codes de format, la méthode format() utilise son argument pour substituer une valeur pour chaque code de format. Par exemple:

>>> 'Sam has {0} red balls and {1} yellow balls'.format(12, 31)

{0} et {1} sont des codes de format. Le code de format {0} est remplacé par le premier argument de format() c’est-à-dire 12, tandis que {1} est remplacé par le deuxième argument de format() c’est-à-dire 31.

Sortie attendue:

Sam has 12 red balls and 31 yellow balls

Cette technique est correcte pour un formatage simple mais que faire si vous voulez spécifier la précision dans un nombre à virgule flottante ? Pour une telle chose, vous devez en savoir plus sur les codes de format. Voici la syntaxe complète des codes de format.

Syntaxe : {:}

Les type peuvent être utilisés avec les codes de format :

.

.

.

Codes de format Description
d pour les entiers
f pour les nombres à virgule flottante
b pour les nombres binaires
o pour les nombres octaux
x pour les nombres hexadécimaux octaux
s pour les chaînes de caractères
e pour une virgule flottante au format exposant

Les exemples suivants rendront les choses plus claires.

Exemple 1:

>>> "Floating point {0:.2f}".format(345.7916732)

Ici nous spécifions 2 chiffres de précision et f est utilisé pour représenter le nombre à virgule flottante.

Sortie attendue:

Floating point 345.79

Exemple 2 :

12
>>> import math>>> "Floating point {0:10.3f}".format(math.pi)

Nous spécifions ici 3 chiffres de précision, 10 pour la largeur et f pour le nombre à virgule flottante.

Sortie attendue:

Floating point 3.142

Exemple 3:

"Floating point pi = {0:.3f}, with {1:d} digit precision".format(math.pi, 3)

Ici d dans {1:d} représente une valeur entière.

Sortie attendue:

Floating point pi = 3.142, with 3 digit precision

Vous devez spécifier la précision uniquement dans le cas de nombres à virgule flottante si vous spécifiez la précision pour un nombre entier ValueError sera soulevée.

Exemple 5:

'Sam has {1:d} red balls and {0:d} yellow balls'.format(12, 31)

Sortie attendue:

Sam has 31 red balls and 12 yellow balls

Exemple 6:

"In binary 4 is {0:b}".format(4) # b for binary, refer to Fig 1.1

Sortie attendue :

In binary 4 is 100

Exemple 7:

12
array = "A = {0}, B = {1}, C = {2}".format(*array)

Sortie attendue :

A = 34, B = 66, C = 12

Exemple 8:

123456
d = {'hats' : 122,'mats' : 42}"Sam had {hats} hats and {mats} mats".format(**d)

Sortie attendue :

Sam had 122 hats and 42 mats

La méthode format() supporte également les arguments mots-clés.

'Sam has {red} red balls and {green} yellow balls'.format(red = 12, green = 31)

Note lors de l’utilisation d’arguments de mots-clés, nous devons utiliser les arguments à l’intérieur de {} pas l’index numérique.

Vous pouvez également mélanger des arguments de position avec des arguments de mots-clés

12
'Sam has {red} red balls, {green} yellow balls \and {0} bats'.format(3, red = 12, green = 31)

La méthode format() de formatage de chaîne de caractères est assez nouvelle et a été introduite dans Python 2.6 . Il existe une autre ancienne technique que vous verrez dans les codes hérités qui vous permet de formater une chaîne de caractères en utilisant l’opérateur % au lieu de la méthode format().

Prenons un exemple.

"%d pens cost = %.2f" % (12, 150.87612)

Ici, nous utilisons une chaîne de caractères modèle à gauche de %. Au lieu de {} pour les codes de format, nous utilisons %. Sur le côté droit de %, nous utilisons un tuple pour contenir nos valeurs. %d et %.2f sont appelés comme spécificateurs de format, ils commencent par % suivi du caractère qui représente le type de données. Par exemple, le spécificateur de format %d est un caractère de remplacement pour un nombre entier, de même %.2f est un caractère de remplacement pour un nombre à virgule flottante.

Donc %d est remplacé par la première valeur du tuple c’est-à-dire 12 et %.2f est remplacé par la deuxième valeur c’est-à-dire 150.87612.

Sortie attendue:

12 pens cost = 150.88

Plus d’exemples.

Exemple 1:

Nouveau:

"{0:d} {1:d} ".format(12, 31)

Ancien:

"%d %d" % (12, 31)

Sortie attendue:

12 31

Exemple 2:

Nouveau :

"{0:.2f} {1:.3f}".format(12.3152, 89.65431)

Ancien:

"%.2f %.3f" % (12.3152, 89.65431)

Sortie attendue :

12.32 89.654

Exemple 3:

Nouveau:

"{0:s} {1:o} {2:.2f} {3:d}".format("Hello", 71, 45836.12589, 45 )

Ancien:

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.