Respostas:
Eles são usados para formatar seqüências de caracteres. %satua como um espaço reservado para uma seqüência de caracteres enquanto %datua 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 %dtruncará para inteiro, %smanterá a formatação, %fserá 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
%sfosse 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 %de %sstring 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 %se %d.
%sdiz 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).
%dpor outro lado, está chamando int()o argumento antes de chamar str(), tipo str(int(arg)), Isso causará intcoerçã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-stringnotaçã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'
%de %ssã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 %sfunciona para String e%d funciona para variáveis numéricas ou decimais.
se você imprimir variable_3ficaria 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
%se %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-stringsque 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%spara substituir as palavras-chave inseridas na barra de endereço. O Python usa de%smaneira semelhante.print('description: %s' % descrip)No%soperador será substituído pela cadeia de texto armazenado nadescripvariável. As chaves redondas evitar uma mensagem de erro em Python 3.