Risposte:
Sono usati per formattare stringhe. %s
funge da segnaposto per una stringa mentre %d
funge da segnaposto per un numero. I loro valori associati vengono passati tramite una tupla usando l' %
operatore.
name = 'marcog'
number = 42
print '%s %d' % (name, number)
stamperà marcog 42
. Si noti che name è una stringa (% s) e number è un numero intero (% d per i decimali).
Vedi https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting per i dettagli.
In Python 3 l'esempio sarebbe:
print('%s %d' % (name, number))
da python 3 doc
%d
è per intero decimale
%s
è per stringa generica o oggetto e in caso di oggetto, verrà convertito in stringa
Considera il seguente codice
name ='giacomo'
number = 4.3
print('%s %s %d %f %g' % (name, number, number, number, number))
sarà messo fuori
giacomo 4.3 4 4.300000 4.3
come puoi vedere %d
si troncerà a numero intero, %s
manterrà la formattazione, %f
verrà stampato come float e %g
verrà utilizzato per il numero generico
ovviamente
print('%d' % (name))
genererà un'eccezione; non è possibile convertire la stringa in numero
%s
fosse usato per un numero.
%s
viene utilizzato come segnaposto per i valori di stringa che si desidera iniettare in una stringa formattata.
%d
viene utilizzato come segnaposto per valori numerici o decimali.
Ad esempio (per python 3)
print ('%s is %d years old' % ('Joe', 42))
Uscirebbe
Joe is 42 years old
Questi sono segnaposto:
Per esempio: 'Hi %s I have %d donuts' %('Alice', 42)
Questa riga di codice sostituirà% s con Alice (str) e% d con 42.
Produzione: 'Hi Alice I have 42 donuts'
Ciò potrebbe essere ottenuto con un "+" il più delle volte. Per comprendere meglio la tua domanda, potresti anche voler controllare {} / .format (). Ecco un esempio: formattazione della stringa Python:% vs. .format
vedi anche qui un video tutorial di Google Python @ 40 ', con alcune spiegazioni https://www.youtube.com/watch?v=tKTZoB2Vjuk
L' %d
e %s
formattazione delle stringhe "comandi" vengono utilizzati per stringhe di formato. Il %d
è per i numeri, e %s
è per le stringhe.
Per un esempio:
print("%s" % "hi")
e
print("%d" % 34.6)
Per passare più argomenti:
print("%s %s %s%d" % ("hi", "there", "user", 123456))
sarà di ritorno hi there user123456
Queste sono tutte risposte informative, ma nessuna è abbastanza al centro di quale sia la differenza tra %s
e %d
.
%s
dice al formatter di chiamare la str()
funzione sull'argomento e dato che per definizione stiamo stringendo una stringa, %s
essenzialmente sta semplicemente eseguendo str(arg)
.
%d
d'altra parte, sta invocando int()
l'argomento prima di chiamare str()
, come str(int(arg))
, Ciò causerà int
coercizione e str
coercizione.
Ad esempio, posso convertire un valore esadecimale in decimale,
>>> '%d' % 0x15
'21'
o troncare un galleggiante.
>>> '%d' % 34.5
'34'
Ma l'operazione genererà un'eccezione se l'argomento non è un numero.
>>> '%d' % 'thirteen'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: %d format: a number is required, not str
Quindi, se l'intento è solo quello di chiamare str(arg)
, allora %s
è sufficiente, ma se hai bisogno di una formattazione extra (come la formattazione di posizioni decimali float) o di altra coercizione, allora sono necessari gli altri simboli di formato.
Con la f-string
notazione, quando si esce dal formatter, l'impostazione predefinita è 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 stesso vale con string.format
; il valore predefinito è str
.
>>> a = 1
>>> '{}'.format(a)
'1'
>>> '{!s}'.format(a)
'1'
>>> '{:d}'.format(a)
'1'
%d
e %s
sono segnaposto, funzionano come una variabile sostituibile. Ad esempio, se si creano 2 variabili
variable_one = "Stackoverflow"
variable_two = 45
puoi assegnare quelle variabili a una frase in una stringa usando una tupla delle variabili.
variable_3 = "I was searching for an answer in %s and found more than %d answers to my question"
Nota che %s
funziona per String e %d
funziona per variabili numeriche o decimali.
se stampi variable_3
sembrerebbe così
print(variable_3 % (variable_one, variable_two))
Stavo cercando una risposta in StackOverflow e ho trovato più di 45 risposte alla mia domanda.
Sono identificatori di formato. Vengono utilizzati quando si desidera includere il valore delle espressioni Python nelle stringhe, con un formato specifico applicato.
Vedi Dive in Python per un'introduzione relativamente dettagliata.
Secondo gli ultimi standard, è così che dovrebbe essere fatto.
print("My name is {!s} and my number is{:d}".format("Agnel Vishal",100))
Controlla i documenti e il programma di esempio di python3.6
Nel caso in cui desideri evitare% s o% d, allora ..
name = 'marcog'
number = 42
print ('my name is',name,'and my age is:', number)
Produzione:
my name is marcog and my name is 42
%s
e %d
.
print
è una funzione in Python 3, non un'istruzione.
% s viene utilizzato per contenere lo spazio per la stringa% d viene utilizzato per contenere lo spazio per il numero
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))
questo video approfondisce questo suggerimento https://www.youtube.com/watch?v=4zN5YsuiqMA
parlando di quale ...
python3.6 viene fornito f-strings
che rende le cose molto più facili nella formattazione!
ora se la tua versione di Python è maggiore di 3.6 puoi formattare le tue stringhe con questi metodi disponibili:
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
viene utilizzato con le configurazioni dei motori di ricerca. Chrome utilizza%s
per sostituire le parole chiave inserite nella barra degli indirizzi. Python utilizza%s
in modo simile. Inprint('description: %s' % descrip)
l'%s
operatore sarà sostituito dalla stringa di testo memorizzato nelladescrip
variabile. Le parentesi tonde impediscono un messaggio di errore in Python 3.