Respuestas:
Se utilizan para formatear cadenas. %s
actúa como marcador de posición para una cadena mientras que %d
actúa como marcador de posición para un número. Sus valores asociados se pasan a través de una tupla utilizando el %
operador.
name = 'marcog'
number = 42
print '%s %d' % (name, number)
imprimirá marcog 42
. Tenga en cuenta que name es una cadena (% s) y number es un número entero (% d para decimal).
Consulte https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting para obtener más detalles.
En Python 3 el ejemplo sería:
print('%s %d' % (name, number))
de python 3 doc
%d
es para entero decimal
%s
es para cadena u objeto genérico y en caso de objeto, se convertirá en 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 puede ver, %d
se truncará a entero, %s
mantendrá el formato, %f
se imprimirá como flotante y %g
se usará para un número genérico
obviamente
print('%d' % (name))
generará una excepción; no puedes convertir una cadena en un número
%s
se usara para un número en su lugar.
%s
se utiliza como marcador de posición para los valores de cadena que desea inyectar en una cadena con formato.
%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))
Saldría
Joe is 42 years old
Estos son marcadores de posición:
Por ejemplo: 'Hi %s I have %d donuts' %('Alice', 42)
Esta línea de código sustituirá% s con Alice (str) y% d con 42.
Salida: '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, también puede marcar {} / .format (). Aquí hay un ejemplo: Formato de cadena de Python:% vs. .format
También vea aquí un video tutorial de Google Python @ 40 ', tiene algunas explicaciones https://www.youtube.com/watch?v=tKTZoB2Vjuk
El %d
y el %s
formato de cadenas de "comandos" se utilizan para las cadenas de formato. El %d
es para números, y %s
es para cadenas.
Para un ejemplo:
print("%s" % "hi")
y
print("%d" % 34.6)
Para pasar múltiples argumentos:
print("%s %s %s%d" % ("hi", "there", "user", 123456))
volverá hi there user123456
Estas son todas respuestas informativas, pero ninguna está llegando al núcleo de cuál es la diferencia entre %s
y%d
.
%s
le dice al formateador que llame a la str()
función en el argumento y dado que estamos coaccionando a una cadena por definición, %s
esencialmente se está ejecutando str(arg)
.
%d
por otro lado, está recurriendo int()
al argumento antes de invocar str()
, como str(int(arg))
, Esto causará int
coacción y 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 la f-string
notación, cuando deja el formateador fuera, 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'
%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
funciona 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.
Son especificadores de formato. Se usan cuando desea incluir el valor de sus expresiones de Python en cadenas, con un formato específico impuesto.
Ver Sumérgete en Python para una introducción relativamente detallada.
Según los últimos estándares, así es como debe hacerse.
print("My name is {!s} and my number is{:d}".format("Agnel Vishal",100))
Verifique los documentos de python3.6 y el programa de muestra
En caso de que desee evitar% so% d entonces ...
name = 'marcog'
number = 42
print ('my name is',name,'and my age is:', number)
Salida:
my name is marcog and my name is 42
%s
y %d
.
print
es una función en Python 3, no una declaración.
% s se usa para mantener espacio para la cadena% d se usa para mantener espacio para el número
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))
este video profundiza sobre ese consejo https://www.youtube.com/watch?v=4zN5YsuiqMA
hablando de eso ...
¡viene con python3.6 f-strings
que hace que las cosas sean mucho más fáciles de formatear!
ahora, si su versión de Python es superior a 3.6, puede formatear sus cadenas con estos métodos 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
se usa con las configuraciones de motores de búsqueda. Chrome utiliza%s
para reemplazar las palabras clave ingresadas en la barra de direcciones. Python usa%s
de manera similar. Enprint('description: %s' % descrip)
el%s
operador será reemplazado por la cadena de texto almacenada en ladescrip
variable. Los corchetes evitan un mensaje de error en Python 3.