Odpowiedzi:
Służą do formatowania ciągów. %s
pełni rolę symbolu zastępczego dla ciągu znaków, podczas gdy %d
pełni rolę symbolu zastępczego dla liczby. Powiązane z nimi wartości są przekazywane za pośrednictwem krotki przy użyciu %
operatora.
name = 'marcog'
number = 42
print '%s %d' % (name, number)
wydrukuje marcog 42
. Zwróć uwagę, że nazwa jest łańcuchem (% s), a liczba jest liczbą całkowitą (% d jako dziesiętna).
Szczegółowe informacje można znaleźć pod adresem https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting .
W Pythonie 3 przykładem byłoby:
print('%s %d' % (name, number))
%d
dotyczy liczby całkowitej dziesiętnej
%s
jest dla ogólnego ciągu lub obiektu, aw przypadku obiektu zostanie przekonwertowany na łańcuch
Rozważmy następujący kod
name ='giacomo'
number = 4.3
print('%s %s %d %f %g' % (name, number, number, number, number))
wyjście będzie
giacomo 4,3 4 4,300000 4,3
jak widać, %d
spowoduje obcięcie do liczby całkowitej, %s
zachowa formatowanie, %f
wydrukuje jako zmiennoprzecinkowe i %g
jest używane jako liczba ogólna
oczywiście
print('%d' % (name))
wygeneruje wyjątek; nie możesz zamienić łańcucha na liczbę
%s
zamiast tego został użyty jako liczba.
%s
jest używany jako symbol zastępczy dla wartości ciągu, które chcesz wstrzyknąć do sformatowanego ciągu.
%d
jest używany jako symbol zastępczy wartości liczbowych lub dziesiętnych.
Na przykład (dla Pythona 3)
print ('%s is %d years old' % ('Joe', 42))
Wyjście
Joe is 42 years old
Oto symbole zastępcze:
Na przykład: 'Hi %s I have %d donuts' %('Alice', 42)
Ten wiersz kodu zastąpi% s Alice (str), a% d 42.
Wynik: 'Hi Alice I have 42 donuts'
W większości przypadków można to osiągnąć za pomocą „+”. Aby lepiej zrozumieć swoje pytanie, możesz również sprawdzić {} / .format (). Oto jeden przykład: formatowanie napisów w Pythonie:% kontra .format
zobacz także film instruktażowy google Python @ 40 ', zawiera kilka wyjaśnień https://www.youtube.com/watch?v=tKTZoB2Vjuk
%d
I %s
ciąg formatowanie „polecenia” są stosowane do ciągów wielkoformatowych. To %d
jest dla liczb i%s
dla łańcuchów.
Dla przykładu:
print("%s" % "hi")
i
print("%d" % 34.6)
Aby przekazać wiele argumentów:
print("%s %s %s%d" % ("hi", "there", "user", 123456))
wróci hi there user123456
Są to wszystko pouczające odpowiedzi, ale żadna z nich nie jest w pełni zrozumiała, jaka jest różnica między %s
a%d
.
%s
mówi programowi formatującemu, aby wywołał str()
funkcję na argumencie, a ponieważ z definicji wymuszamy na łańcuchu, w %s
zasadzie po prostu wykonuje str(arg)
.
%d
z drugiej strony odwołuje int()
się do argumentu przed wywołaniem str()
, na przykład str(int(arg))
Spowoduje to zarówno int
przymus, jak i str
przymus.
Na przykład mogę zamienić wartość szesnastkową na dziesiętną,
>>> '%d' % 0x15
'21'
lub obcięcie pływaka.
>>> '%d' % 34.5
'34'
Ale operacja zgłosi wyjątek, jeśli argument nie jest liczbą.
>>> '%d' % 'thirteen'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: %d format: a number is required, not str
Więc jeśli intencją jest tylko zadzwonić str(arg)
, to%s
jest wystarczające, ale jeśli potrzebujesz dodatkowego formatowania (jak formatowanie zmiennoprzecinkowych miejsc dziesiętnych) lub innego przymusu, potrzebne są inne symbole formatu.
W przypadku f-string
notacji, gdy opuścisz formater, wartością domyślną jeststr
.
>>> 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'
To samo dotyczy string.format
; wartość domyślna to str
.
>>> a = 1
>>> '{}'.format(a)
'1'
>>> '{!s}'.format(a)
'1'
>>> '{:d}'.format(a)
'1'
%d
i %s
są symbolami zastępczymi, działają jako zmienna wymienna. Na przykład, jeśli utworzysz 2 zmienne
variable_one = "Stackoverflow"
variable_two = 45
możesz przypisać te zmienne do zdania w łańcuchu za pomocą krotki zmiennych.
variable_3 = "I was searching for an answer in %s and found more than %d answers to my question"
Zauważ, że %s
działa dla String i%d
działa dla zmiennych numerycznych lub dziesiętnych.
jeśli wydrukujesz variable_3
, będzie wyglądać tak
print(variable_3 % (variable_one, variable_two))
Szukałem odpowiedzi w StackOverflow i znalazłem ponad 45 odpowiedzi na moje pytanie.
Są to specyfikatory formatu. Są używane, gdy chcesz zawrzeć wartość wyrażeń Pythona w łańcuchach, z wymuszonym określonym formatem.
Aby uzyskać stosunkowo szczegółowe wprowadzenie, zobacz Zanurz się w Pythonie .
Zgodnie z najnowszymi standardami tak powinno być.
print("My name is {!s} and my number is{:d}".format("Agnel Vishal",100))
Sprawdź dokumentację python3.6 i przykładowy program
Jeśli chcesz uniknąć% s lub% d, to ...
name = 'marcog'
number = 42
print ('my name is',name,'and my age is:', number)
Wynik:
my name is marcog and my name is 42
%s
i %d
.
print
jest funkcją w Pythonie 3, a nie instrukcją.
% s służy do przechowywania miejsca dla ciągu znaków% d służy do przechowywania miejsca na liczbę
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))
ten film szczegółowo omawia tę wskazówkę https://www.youtube.com/watch?v=4zN5YsuiqMA
skoro o tym mowa ...
python3.6 jest f-strings
znacznie łatwiejszy w formatowaniu!
teraz, jeśli twoja wersja Pythona jest większa niż 3.6, możesz sformatować swoje ciągi za pomocą tych dostępnych metod:
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
jest używany z konfiguracjami wyszukiwarek. Chrome%s
zastępuje słowa kluczowe wpisane w pasku adresu. Python używa%s
w podobny sposób. Wprint('description: %s' % descrip)
tym%s
operatora zostaną zastąpione przez ciąg tekstowy przechowywany wdescrip
zmiennej. Nawiasy okrągłe zapobiegają wyświetlaniu komunikatu o błędzie w Pythonie 3.