HOWTO · Python
Corriger TypeError : Not Enough Arguments for Format String Error en Python
Ce didacticiel traite des arguments insuffisants pour l'erreur de chaîne de format en Python.
Sur cette page
En Python, nous pouvons formater des chaînes pour obtenir le résultat final dans le style et le format souhaités.
Le formatage de chaîne implique également l’utilisation de valeurs d’espace réservé avec le signe %. Cette méthode est une technique très courante pour fournir des valeurs manquantes en Python avec des valeurs temporaires.
Cependant, si l’on n’y prend pas garde, cela peut conduire à l’erreur not enough arguments for format string, une TypeError. Nous discuterons de cette erreur et de ses solutions dans ce tutoriel.
Voir le code suivant.
a = 2
b = 4
c = 6
s = "First %s Second %s Third %s" % a, b, c
print(s)
Production :
TypeError: not enough arguments for format string
Nous obtenons cette erreur car nous ne fournissons qu’un seul signe % dans la chaîne pour donner les valeurs, et il y a trois valeurs. Le code ci-dessus ne considère que la première valeur (a). Nous devons les passer dans un tuple pour résoudre ce problème.
Par example:
a = 2
b = 4
c = 6
s = "First %s Second %s Third %s" % (a, b, c)
print(s)
Production :
First 2 Second 4 Third 6
Une autre façon de surmonter cette erreur est d’utiliser la fonction format(). La méthode % est obsolète pour le formatage des chaînes.
On peut préciser les valeurs dans la fonction format() et mentionner les valeurs manquantes à l’aide d’accolades {}.
Voir le code ci-dessous.
a = 2
b = 4
c = 6
s = "First {0} Second {1} Third {2}".format(a, b, c)
print(s)
Production :
First 2 Second 4 Third 6
En Python 3.x et supérieur, nous pouvons utiliser les fstrings pour fournir des chaînes d’espace réservé. Cette méthode est une méthode plus récente et plus efficace pour formater les chaînes.
Nous pouvons fournir les valeurs entre accolades comme dans l’exemple précédent.
Voir l’exemple suivant.
a = 2
b = 4
c = 6
s = f"First {a} Second {b} Third {c}"
print(s)
Production :
First 2 Second 4 Third 6