Odpowiedzi:
Służą do formatowania ciągów. %spełni rolę symbolu zastępczego dla ciągu znaków, podczas gdy %dpeł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ć, %dspowoduje obcięcie do liczby całkowitej, %szachowa formatowanie, %fwydrukuje jako zmiennoprzecinkowe i %gjest używane jako liczba ogólna
oczywiście
print('%d' % (name))
wygeneruje wyjątek; nie możesz zamienić łańcucha na liczbę
%szamiast 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
%dI %sciąg formatowanie „polecenia” są stosowane do ciągów wielkoformatowych. To %djest 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 %sa%d .
%smówi programowi formatującemu, aby wywołał str()funkcję na argumencie, a ponieważ z definicji wymuszamy na łańcuchu, w %szasadzie po prostu wykonuje str(arg).
%dz drugiej strony odwołuje int()się do argumentu przed wywołaniem str(), na przykład str(int(arg))Spowoduje to zarówno intprzymus, jak i strprzymus.
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-stringnotacji, 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'
%di %ssą 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 %sdział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
%si %d.
printjest 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-stringsznacznie ł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
%sjest używany z konfiguracjami wyszukiwarek. Chrome%szastępuje słowa kluczowe wpisane w pasku adresu. Python używa%sw podobny sposób. Wprint('description: %s' % descrip)tym%soperatora zostaną zastąpione przez ciąg tekstowy przechowywany wdescripzmiennej. Nawiasy okrągłe zapobiegają wyświetlaniu komunikatu o błędzie w Pythonie 3.