Respostas:
Eles são usados para formatar seqüências de caracteres. %s
atua como um espaço reservado para uma seqüência de caracteres enquanto %d
atua como um espaço reservado para um número. Seus valores associados são passados através de uma tupla usando o %
operador.
name = 'marcog'
number = 42
print '%s %d' % (name, number)
irá imprimir marcog 42
. Observe que o nome é uma sequência (% s) e o número é um número inteiro (% d para decimal).
Consulte https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting para obter detalhes.
No Python 3, o exemplo seria:
print('%s %d' % (name, number))
do python 3 doc
%d
é para inteiro decimal
%s
é para string ou objeto genérico e, no caso de objeto, será convertido em string
Considere o seguinte código
name ='giacomo'
number = 4.3
print('%s %s %d %f %g' % (name, number, number, number, number))
a saída será
4,3 4 4,300000 4,3
como você pode ver %d
truncará para inteiro, %s
manterá a formatação, %f
será impressa como flutuante e %g
é usada para número genérico
obviamente
print('%d' % (name))
irá gerar uma exceção; você não pode converter string em número
%s
fosse usado para um número.
%s
é usado como um espaço reservado para os valores da string que você deseja injetar em uma string formatada.
%d
é usado como um espaço reservado para valores numéricos ou decimais.
Por exemplo (para python 3)
print ('%s is %d years old' % ('Joe', 42))
Saída
Joe is 42 years old
Estes são espaços reservados:
Por exemplo: 'Hi %s I have %d donuts' %('Alice', 42)
Essa linha de código substituirá% s por Alice (str) e% d por 42.
Resultado: 'Hi Alice I have 42 donuts'
Isso pode ser alcançado com um "+" na maioria das vezes. Para entender melhor sua pergunta, você também pode verificar {} / .format (). Aqui está um exemplo: Formatação de string Python:% vs.
veja também aqui um vídeo tutorial do google python @ 40 ', com algumas explicações https://www.youtube.com/watch?v=tKTZoB2Vjuk
Os "comandos" de formatação %d
e %s
string são usados para formatar strings. O %d
é para números e%s
é para seqüências de caracteres.
Por exemplo:
print("%s" % "hi")
e
print("%d" % 34.6)
Para passar vários argumentos:
print("%s %s %s%d" % ("hi", "there", "user", 123456))
retornará hi there user123456
Todas essas são respostas informativas, mas nenhuma está chegando ao cerne da diferença entre %s
e %d
.
%s
diz ao formatador para chamar a str()
função no argumento e, como estamos coagindo a uma string por definição, %s
é essencialmente apenas um desempenho str(arg)
.
%d
por outro lado, está chamando int()
o argumento antes de chamar str()
, tipo str(int(arg))
, Isso causará int
coerção e tambémstr
coerção.
Por exemplo, eu posso converter um valor hexadecimal em decimal,
>>> '%d' % 0x15
'21'
ou truncar uma bóia.
>>> '%d' % 34.5
'34'
Mas a operação gerará uma exceção se o argumento não for um número.
>>> '%d' % 'thirteen'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: %d format: a number is required, not str
Portanto, se a intenção é apenas chamar str(arg)
, então%s
é suficiente, mas se você precisar de formatação extra (como formatar casas decimais flutuantes) ou outra coerção, os outros símbolos de formato serão necessários.
Com a f-string
notação, quando você deixa o formatador de fora, o padrão é 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'
O mesmo acontece com string.format
; o padrão é str
.
>>> a = 1
>>> '{}'.format(a)
'1'
>>> '{!s}'.format(a)
'1'
>>> '{:d}'.format(a)
'1'
%d
e %s
são espaços reservados, eles funcionam como uma variável substituível. Por exemplo, se você criar 2 variáveis
variable_one = "Stackoverflow"
variable_two = 45
você pode atribuir essas variáveis a uma sentença em uma string usando uma tupla das variáveis.
variable_3 = "I was searching for an answer in %s and found more than %d answers to my question"
Observe que %s
funciona para String e%d
funciona para variáveis numéricas ou decimais.
se você imprimir variable_3
ficaria assim
print(variable_3 % (variable_one, variable_two))
Eu estava procurando uma resposta no StackOverflow e encontrei mais de 45 respostas para minha pergunta.
Eles são especificadores de formato. Eles são usados quando você deseja incluir o valor de suas expressões Python em strings, com um formato específico imposto.
Veja Mergulhe no Python para uma introdução relativamente detalhada.
De acordo com os padrões mais recentes, é assim que deve ser feito.
print("My name is {!s} and my number is{:d}".format("Agnel Vishal",100))
Verifique os documentos python3.6 e o programa de amostra
Caso você queira evitar% s ou% d, então ..
name = 'marcog'
number = 42
print ('my name is',name,'and my age is:', number)
Resultado:
my name is marcog and my name is 42
%s
e %d
.
print
é uma função no Python 3, não uma declaração.
% s é usado para armazenar espaço para a string% d é usado para armazenar espaço para 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 vídeo é aprofundado sobre essa dica https://www.youtube.com/watch?v=4zN5YsuiqMA
por falar
nisso ... python3.6 vem com o f-strings
que facilita muito a formatação!
Agora, se a sua versão python for maior que 3.6, você poderá formatar suas strings com estes métodos disponíveis:
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
é usado nas configurações dos mecanismos de pesquisa. O Chrome usa%s
para substituir as palavras-chave inseridas na barra de endereço. O Python usa de%s
maneira semelhante.print('description: %s' % descrip)
No%s
operador será substituído pela cadeia de texto armazenado nadescrip
variável. As chaves redondas evitar uma mensagem de erro em Python 3.