Réponses:
Ils sont utilisés pour le formatage des chaînes. %s
agit comme un espace réservé pour une chaîne tandis que %d
agit comme un espace réservé pour un nombre. Leurs valeurs associées sont transmises via un tuple à l'aide de l' %
opérateur.
name = 'marcog'
number = 42
print '%s %d' % (name, number)
imprimera marcog 42
. Notez que nom est une chaîne (% s) et nombre est un entier (% d pour décimal).
Voir https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting pour plus de détails.
Dans Python 3, l'exemple serait:
print('%s %d' % (name, number))
à partir de python 3 doc
%d
est pour un entier décimal
%s
est pour une chaîne ou un objet générique et en cas d'objet, il sera converti en chaîne
Considérez le code suivant
name ='giacomo'
number = 4.3
print('%s %s %d %f %g' % (name, number, number, number, number))
la sortie sera
giacomo 4.3 4 4.300000 4.3
comme vous pouvez le voir, il %d
sera tronqué en entier, %s
maintiendra le formatage, %f
sera imprimé en flottant et %g
est utilisé pour le nombre générique
évidemment
print('%d' % (name))
générera une exception; vous ne pouvez pas convertir une chaîne en nombre
%s
était utilisé pour un nombre à la place.
%s
est utilisé comme espace réservé pour les valeurs de chaîne que vous souhaitez injecter dans une chaîne formatée.
%d
est utilisé comme espace réservé pour les valeurs numériques ou décimales.
Par exemple (pour python 3)
print ('%s is %d years old' % ('Joe', 42))
Sortirait
Joe is 42 years old
Ce sont des espaces réservés:
Par exemple: 'Hi %s I have %d donuts' %('Alice', 42)
Cette ligne de code remplacera% s par Alice (str) et% d par 42.
Production: 'Hi Alice I have 42 donuts'
Ceci pourrait être réalisé avec un "+" la plupart du temps. Pour mieux comprendre votre question, vous pouvez également vérifier {} / .format (). Voici un exemple: Formatage de chaîne Python:% vs .format
voir aussi ici une vidéo tutoriel google python @ 40 ', elle a quelques explications https://www.youtube.com/watch?v=tKTZoB2Vjuk
Les "commandes" de mise en forme des chaînes %d
et %s
sont utilisées pour formater les chaînes. Le %d
est pour les nombres, et%s
est pour les chaînes.
À titre d'exemple:
print("%s" % "hi")
et
print("%d" % 34.6)
Pour transmettre plusieurs arguments:
print("%s %s %s%d" % ("hi", "there", "user", 123456))
reviendra hi there user123456
Ce sont toutes des réponses informatives, mais aucune ne permet de comprendre la différence entre %s
et%d
.
%s
indique au formateur d'appeler la str()
fonction sur l'argument et puisque nous contraignons à une chaîne par définition, il %s
est essentiellement performant str(arg)
.
%d
d'autre part, fait appel int()
à l'argument avant d'appeler str()
, comme str(int(arg))
, Cela provoquera la int
coercition ainsi que la str
coercition.
Par exemple, je peux convertir une valeur hexadécimale en décimal,
>>> '%d' % 0x15
'21'
ou tronquer un flotteur.
>>> '%d' % 34.5
'34'
Mais l'opération lèvera une exception si l'argument n'est pas un nombre.
>>> '%d' % 'thirteen'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: %d format: a number is required, not str
Donc, si l'intention est juste d'appeler str(arg)
, alors%s
suffit, mais si vous avez besoin d'un formatage supplémentaire (comme le formatage des décimales flottantes) ou d'une autre contrainte, les autres symboles de format sont nécessaires.
Avec la f-string
notation, lorsque vous laissez le formateur de côté, la valeur par défaut est str
.
>>> a = 1
>>> f'{a}'
'1'
>>> f'{a:d}'
'1'
>>> a = '1'
>>> f'{a:d}'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: Unknown format code 'd' for object of type 'str'
La même chose est vraie avec string.format
; la valeur par défaut est str
.
>>> a = 1
>>> '{}'.format(a)
'1'
>>> '{!s}'.format(a)
'1'
>>> '{:d}'.format(a)
'1'
%d
et %s
sont des espaces réservés, ils fonctionnent comme une variable remplaçable. Par exemple, si vous créez 2 variables
variable_one = "Stackoverflow"
variable_two = 45
vous pouvez affecter ces variables à une phrase dans une chaîne en utilisant un tuple des variables.
variable_3 = "I was searching for an answer in %s and found more than %d answers to my question"
Notez que cela %s
fonctionne pour String et%d
fonctionne pour les variables numériques ou décimales.
si vous imprimez variable_3
cela ressemblerait à ceci
print(variable_3 % (variable_one, variable_two))
Je cherchais une réponse dans StackOverflow et j'ai trouvé plus de 45 réponses à ma question.
Ce sont des spécificateurs de format. Ils sont utilisés lorsque vous souhaitez inclure la valeur de vos expressions Python dans des chaînes, avec un format spécifique appliqué.
Voir Plongez dans Python pour une introduction relativement détaillée.
Selon les dernières normes, c'est ainsi que cela doit être fait.
print("My name is {!s} and my number is{:d}".format("Agnel Vishal",100))
Vérifiez les documents et l' exemple de programme python3.6
Si vous souhaitez éviter% s ou% d alors ..
name = 'marcog'
number = 42
print ('my name is',name,'and my age is:', number)
Production:
my name is marcog and my name is 42
%s
et %d
.
print
est une fonction en Python 3, pas une instruction.
% s est utilisé pour contenir de l'espace pour la chaîne% d est utilisé pour contenir de l'espace pour le nombre
name = "Moses";
age = 23
print("My name is %s am CEO at MoTech Computers " %name)
print("Current am %d years old" %age)
print("So Am %s and am %d years old" %(name,age))
cette vidéo explique en profondeur cette astuce https://www.youtube.com/watch?v=4zN5YsuiqMA
en parlant de cela ...
python3.6 est livré avec f-strings
ce qui rend les choses beaucoup plus faciles dans le formatage!
maintenant, si votre version de python est supérieure à 3,6, vous pouvez formater vos chaînes avec ces méthodes disponibles:
name = "python"
print ("i code with %s" %name) # with help of older method
print ("i code with {0}".format(name)) # with help of format
print (f"i code with {name}") # with help of f-strings
%s
est utilisé avec les configurations des moteurs de recherche. Chrome utilise%s
pour remplacer les mots clés saisis dans la barre d'adresse. Python utilise%s
de la même manière. Dansprint('description: %s' % descrip)
l'%s
opérateur sera remplacé par la chaîne de texte stockée dans ladescrip
variable. Les accolades rondes empêchent un message d'erreur dans Python 3.