Eu nu't înțeleagă ce %s
și %d
face și cum funcționează.
Acestea sunt utilizate pentru formatarea siruri de caractere. "%s " acte un substituent pentru un șir de timp %d
acționează ca un substituent pentru un număr. Valorile asociate acestora sunt transferate printr-un tuplu folosind %
operator.
name = 'marcog'
number = 42
print '%s %d' % (name, number)
va imprima marcog 42
. Rețineți că numele este un șir de caractere (%s) și numărul este un număr întreg (%d pentru zecimal).
Vezi https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting pentru detalii.
În Python 3 exemplu ar fi:
print('%s %d' % (name, number))
"%s " este folosit ca un substituent pentru șirul de valori doriți să vă injectați într-un string formatat.
%d
este folosit ca un substituent pentru numerică sau valori zecimale.
De exemplu (pentru python 3)
print ('%s is %d years old' % ('Joe', 42))
Ar ieșire
Joe is 42 years old
de python 3 doc
%d
este pentru întreg zecimal
"%s " este pentru generic string sau un obiect și, în caz de obiect, acesta va fi convertit la string
Luați în considerare următorul cod
name ='giacomo'
number = 4.3
print('%s %s %d %f %g' % (name, number, number, number, number))
de ieșire va fi
giacomo 4.3 4 4.300000 4.3
după cum puteți vedea %d
va trunchia la întreg, "%s " și se va menține formatarea, %f
va imprima ca plutesc și %g
este folosit generic pentru numărul
evident
print('%d' % (name))
va genera o excepție; nu puteți converti șir la număr
Acestea sunt substituenți:
De exemplu: 'Hi %e am %d gogoși' %('Alice', 42)
Aceasta linie de cod va substitui %s cu Alice (str) și %d cu 42.
Ieșire: 'Hi Alice am 42 de gogoși'
Acest lucru ar putea fi realizat cu un "+" de cele mai multe ori. Pentru a obține o înțelegere mai profundă la intrebarea ta, poate doriți să verificați {} / .format() la fel de bine. Aici este un exemplu: https://stackoverflow.com/questions/5082452/python-string-formatting-vs-format
de asemenea, a se vedea aici un google python tutorial video @ 40', acesta are unele explicații
A %d
și a %s
șir de formatare "comenzi" sunt utilizate pentru a formata siruri de caractere. A %d
este pentru numere, și "%s " este pentru siruri de caractere.
Pentru un exemplu:
print("%s" % "hi")
și
print("%d" % 34.6)
Pentru a trece de mai multe argumente:
print("%s %s %s%d" % ("buna", "nu", "de utilizare", 123456))
va reveni hi acolo user123456
%d
și "%s " sunt substituenți, acestea funcționează ca o sursă variabilă. De exemplu, dacă veți crea 2 variabile
variable_one = "Stackoverflow"
variable_two = 45
puteți atribui aceste variabile de la o propoziție într-un șir utilizând un tuplu de variabile.
variable_3 = "I was searching for an answer in %s and found more than %d answers to my question"
Rețineți că "%s " lucrări pentru Coarde și %d
de lucru pentru numeric sau decimal variabile.
dacă imprimați variable_3
ar arăta așa
print(variable_3 % (variable_one, variable_two))
Am fost în căutarea pentru un răspuns în StackOverflow și a găsit mai mult de 45 de răspunsuri la întrebarea mea.
Acestea sunt specificatori de format. Ele sunt utilizate atunci când doriți să includă valoarea de expresii Python în siruri de caractere, cu un format specific aplicat.
A se vedea se arunca cu capul în Python pentru un relativ detaliate introducere.
Conform ultimelor standarde, acest lucru este cum ar trebui să fie făcut.
print("My name is {!s} and my number is{:d}".format("Agnel Vishal",100))
Nu a verifica python3.6 docs și exemplu de program
apropo ...
python3.6 vine cu f-siruri de caractere`, ceea ce face lucrurile mult mai ușor în formatare!
acum dacă versiunea python este mai mare decât 3.6 puteți formata siruri de caractere cu aceste metode disponibile:
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
Toate astea sunt informative, răspunsuri, dar nici unul nu sunt destul ajungând la esența a ceea ce diferență este între "%s " și %d
.
"%s "spune formatare pentru a apela str()
funcția pe argument și de vreme ce ne-a indemnat la un șir de caractere, prin definiție, "%s " este, în esență, doar performante str(arg)
.
%d
, pe de altă parte, este de asteptare int()
pe argumentul înainte de a suna str()
, ca str(int(arg))
, Acest lucru va provoca int
constrângere, precum str
constrângere.
De exemplu, eu pot converti o valoare hex zecimal,
>>> '%d' % 0x15
'21'
sau trunchia un flotor.
>>> '%d' % 34.5
'34'
Dar operațiunea va ridica o excepție dacă argumentul este't un număr.
>>> '%d' % 'thirteen'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: %d format: a number is required, not str
Deci, dacă intenția este doar de a apela str(arg)
, apoi %s
este suficient, dar dacă aveți nevoie de suplimentare de formatare (cum ar fi formatarea float zecimale) sau alte constrângere, apoi alt format simboluri sunt necesare.
Cu f-string
notație, atunci când vă lăsați de formatare afară, implicit este 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'
Același lucru este valabil cu string.format
; implicit este str
.
>>> a = 1
>>> '{}'.format(a)
'1'
>>> '{!s}'.format(a)
'1'
>>> '{:d}'.format(a)
'1'