karlzt
no entiendo que %s
y %d
hacer y cómo funcionan.
moinudín
Se utilizan para formatear cadenas. %s
actúa como marcador de posición para una cadena mientras %d
actúa como un marcador de posición para un número. Sus valores asociados se pasan a través de una tupla usando el %
operador.
name="marcog"
number = 42
print '%s %d' % (name, number)
imprimirá marcog 42
. Tenga en cuenta que el nombre es una cadena (%s) y el número es un número entero (%d para decimal).
Ver https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting para detalles.
En Python 3 el ejemplo sería:
print('%s %d' % (name, number))
-
En Google Chrome: Configuración >> Buscar >> Administrar motores de búsqueda… observe cómo
%s
se utiliza con las configuraciones del motor de búsqueda. usos de cromo%s
para reemplazar las palabras clave ingresadas en la barra de direcciones. usos de pitón%s
En una forma similar. Enprint('description: %s' % descrip)
el%s
será reemplazado por la cadena de texto almacenada en eldescrip
variable. Las llaves redondas evitan un mensaje de error en Python 3.– noobninja
27 ago 2016 a las 20:51
-
¿Cómo se llaman estos %s, %d, etc.?
– Cadena
19 mayo 2017 a las 18:21
-
@Chaine se llaman marcadores de posición, son variables reemplazables
– León
9 de junio de 2017 a las 19:44
%d
es para entero decimal
%s
es para una cadena u objeto genérico y, en el caso de un objeto, se convertirá en una cadena
Considere el siguiente código
name="giacomo"
number = 4.3
print('%s %s %d %f %g' % (name, number, number, number, number))
la salida será
giacomo 4.3 4 4.300000 4.3
como se puede ver %d
se truncará a entero, %s
mantendrá el formato, %f
se imprimirá como flotante y %g
se utiliza para número genérico
obviamente
print('%d' % (name))
generará una excepción; no puedes convertir cadena a número
-
Esto necesita más votos a favor. Explica lo que sucedería si
%s
se utiliza para un número en su lugar.– Vikas Prasad
1 de septiembre de 2018 a las 13:41
-
¿Cuál es la diferencia entre %d y %i, si ambos se convierten en enteros? ¿Cómo se compara %d con %i y %f?
– Srini
22 de julio de 2019 a las 12:05
soviético
%s
se utiliza como marcador de posición para los valores de cadena que desea inyectar en una cadena formateada.
%d
se utiliza como marcador de posición para valores numéricos o decimales.
Por ejemplo (para python 3)
print ('%s is %d years old' % ('Joe', 42))
daría salida
Joe is 42 years old
-
¿No explica realmente el problema? No estoy explicando el problema, estoy proporcionando una respuesta concisa. a la pregunta. La pregunta preguntaba específicamente para qué servían %s y %d.
– Soviético
16 de febrero de 2012 a las 2:37
-
¿Conoces la diferencia entre %i y %d? ¿Python admite %i?
– cyanbhu
31 de octubre de 2018 a las 1:43
Wyrmwood
Todas estas son respuestas informativas, pero ninguna llega al núcleo de cuál es la diferencia entre %s
y %d
.
%s
le dice al formateador que llame al str()
función en el argumento y dado que estamos coaccionando a una cadena por definición, %s
es esencialmente solo actuar str(arg)
.
%d
por otro lado, está llamando int()
sobre el argumento antes de llamar str()
como str(int(arg))
esto provocará int
la coerción, así como str
coerción.
Por ejemplo, puedo convertir un valor hexadecimal a decimal,
>>> '%d' % 0x15
'21'
o truncar un flotador.
>>> '%d' % 34.5
'34'
Pero la operación generará una excepción si el argumento no es un número.
>>> '%d' % 'thirteen'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: %d format: a number is required, not str
Entonces, si la intención es solo llamar str(arg)
entonces %s
es suficiente, pero si necesita un formato adicional (como formatear lugares decimales flotantes) u otra coerción, entonces se necesitan los otros símbolos de formato.
Con el f-string
notación, cuando deja fuera el formateador, el valor predeterminado es 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'
Lo mismo es cierto con string.format
; el valor predeterminado es str
.
>>> a = 1
>>> '{}'.format(a)
'1'
>>> '{!s}'.format(a)
'1'
>>> '{:d}'.format(a)
'1'
kevin
Estos son marcadores de posición:
Por ejemplo: 'Hi %s I have %d donuts' %('Alice', 42)
Esta línea de código sustituirá %s por Alice (str) y %d por 42.
Producción: 'Hi Alice I have 42 donuts'
Esto podría lograrse con un “+” la mayor parte del tiempo. Para obtener una comprensión más profunda de su pregunta, es posible que también desee verificar {} / .format(). Aquí hay un ejemplo: formato de cadena de Python: % vs. formato
también vea aquí un video tutorial de google python @ 40 ‘, tiene algunas explicaciones
https://www.youtube.com/watch?v=tKTZoB2Vjuk
El %d
y %s
Los “comandos” de formato de cadenas se utilizan para formatear cadenas. El %d
es para números, y %s
es para cuerdas.
Para un ejemplo:
print("%s" % "hi")
y
print("%d" % 34.6)
Para pasar varios argumentos:
print("%s %s %s%d" % ("hi", "there", "user", 123456))
regresará hi there user123456
stefanobaghino
%d
y %s
son marcadores de posición, funcionan como una variable reemplazable. Por ejemplo, si crea 2 variables
variable_one = "Stackoverflow"
variable_two = 45
puede asignar esas variables a una oración en una cadena usando una tupla de las variables.
variable_3 = "I was searching for an answer in %s and found more than %d answers to my question"
Tenga en cuenta que %s
funciona para String y %d
trabajo para variables numéricas o decimales.
si imprimes variable_3
se vería así
print(variable_3 % (variable_one, variable_two))
Estaba buscando una respuesta en StackOverflow y encontré más de 45 respuestas a mi pregunta.