Yanıtlar:
Dizeleri biçimlendirmek için kullanılırlar. %s
bir dize %d
için yer tutucu, bir sayı için yer tutucu görevi görür. İlişkili değerleri %
operatör kullanılarak bir demet aracılığıyla iletilir .
name = 'marcog'
number = 42
print '%s %d' % (name, number)
yazdıracaktır marcog 42
. Adın bir dize (% s) ve sayı bir tamsayı (ondalık için% d) olduğunu unutmayın.
Ayrıntılar için bkz. Https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting .
Python 3'te örnek şöyle olacaktır:
print('%s %d' % (name, number))
dan piton 3 doc
%d
ondalık tam sayı içindir
%s
genel dize veya nesne içindir ve nesne durumunda dize dönüştürülür
Aşağıdaki kodu düşünün
name ='giacomo'
number = 4.3
print('%s %s %d %f %g' % (name, number, number, number, number))
dışarı koymak olacak
giacomo 4,3 4 4,300000 4,3
gördüğünüz gibi %d
tamsayı kısalır, %s
biçimlendirmeyi sürdürür, %f
kayan nokta olarak yazdırır ve %g
genel sayı için kullanılır
belli ki
print('%d' % (name))
bir istisna oluşturur; dizeyi sayıya dönüştüremezsiniz
%s
yerine bir sayı için kullanılırsa ne olacağını açıklar .
%s
, biçimlendirilmiş bir dizeye enjekte etmek istediğiniz dize değerleri için yer tutucu olarak kullanılır.
%d
sayısal veya ondalık değerler için yer tutucu olarak kullanılır.
Örneğin (python 3 için)
print ('%s is %d years old' % ('Joe', 42))
Çıktı
Joe is 42 years old
Bunlar yer tutuculardır:
Örneğin: 'Hi %s I have %d donuts' %('Alice', 42)
Bu kod satırı% s yerine Alice (str) ve% d yerine 42 yazacaktır.
Çıktı: 'Hi Alice I have 42 donuts'
Bu çoğu zaman "+" ile gerçekleştirilebilir. Sorunuzu daha iyi anlamak için {} / .format () öğesini de kontrol etmek isteyebilirsiniz. İşte bir örnek: Python dizesi biçimlendirmesi:% vs. .format
Ayrıca burada bir google python öğretici video @ 40 'bakın, bazı açıklamalar var https://www.youtube.com/watch?v=tKTZoB2Vjuk
%d
Ve %s
"komutları" biçimlendirme dize biçim dizeleri için kullanılır. %d
Sayılar içindir ve %s
dizeleri içindir.
Örnek olarak:
print("%s" % "hi")
ve
print("%d" % 34.6)
Birden çok argüman iletmek için:
print("%s %s %s%d" % ("hi", "there", "user", 123456))
dönecek hi there user123456
Bunların hepsi bilgilendirici cevaplar, ancak hiçbiri %s
ve arasındaki farkın merkezinde yer almıyor %d
.
%s
biçimlendiriciye str()
argümandaki işlevi çağırmasını söyler ve tanım gereği bir dizeye zorladığımız için %s
aslında sadece performans gösterir str(arg)
.
%d
Öte yandan, çağırmadan int()
önce argüman çağırıyor str()
, gibi str(int(arg))
, Bu int
zorlama yanı sıra str
zorlama neden olacaktır .
Örneğin, onaltılık bir değeri ondalığa çevirebilirim,
>>> '%d' % 0x15
'21'
veya bir şamandırayı kısaltabilirsiniz.
>>> '%d' % 34.5
'34'
Ancak argüman bir sayı değilse, işlem bir istisna oluşturacaktır.
>>> '%d' % 'thirteen'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: %d format: a number is required, not str
Yani niyet sadece çağrısına ise str(arg)
, o zaman %s
yeterlidir, ancak fazladan (şamandıra ondalık basamak biçimlendirmek gibi) biçimlendirme veya başka zorlama gerekirse, daha sonra diğer biçim sembolleri ihtiyaç vardır.
İle f-string
Eğer biçimlendirici out ayrılırken gösterimde, varsayılan 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'
Aynı şey string.format
; varsayılan değer str
.
>>> a = 1
>>> '{}'.format(a)
'1'
>>> '{!s}'.format(a)
'1'
>>> '{:d}'.format(a)
'1'
%d
ve %s
yer tutucularsa, değiştirilebilir bir değişken olarak çalışırlar. Örneğin, 2 değişken oluşturursanız
variable_one = "Stackoverflow"
variable_two = 45
değişkenlerin bir demetini kullanarak bu değişkenleri dizedeki bir cümleye atayabilirsiniz.
variable_3 = "I was searching for an answer in %s and found more than %d answers to my question"
Not %s
String ve çalışır %d
sayısal veya ondalık değişkenleri için işin.
yazdırırsanız variable_3
şöyle görünür
print(variable_3 % (variable_one, variable_two))
StackOverflow'da bir cevap arıyordum ve soruma 45'ten fazla cevap buldum.
Bunlar format belirleyicileridir. Bunlar, Python ifadelerinizin değerini, belirli bir biçim uygulanmış olarak dizelere dahil etmek istediğinizde kullanılır.
Nispeten detaylı bir tanıtım için Python'a Dalış bölümüne bakınız .
En son standartlara göre, böyle yapılması gerekir.
print("My name is {!s} and my number is{:d}".format("Agnel Vishal",100))
Python3.6 belgelerini ve örnek programı kontrol edin
O zaman% s veya% d kullanmak istemiyorsanız ..
name = 'marcog'
number = 42
print ('my name is',name,'and my age is:', number)
Çıktı:
my name is marcog and my name is 42
%s
ve %d
.
print
Python 3'te bir deyim değil bir işlevdir.
% s, dize için yer tutmak için kullanılır% d, sayı için yer tutmak için kullanılır
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))
bu video bu ipucu hakkında derinlere gidiyor https://www.youtube.com/watch?v=4zN5YsuiqMA
hangi ...
python3.6 ile geliyor f-strings
biçimlendirme şeyleri çok daha kolay hale getirir!
şimdi python sürümünüz 3.6'dan büyükse, dizelerinizi şu mevcut yöntemlerle biçimlendirebilirsiniz:
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
arama motoru yapılandırmalarında nasıl kullanıldığına dikkat edin . Chrome%s
, adres çubuğuna girilen anahtar kelimeleri değiştirmek için kullanır . Python%s
benzer şekilde kullanır . Gelen operatörü saklanan metin dizesi ile değiştirilecektir değişken. Yuvarlak parantezler Python 3'te bir hata mesajını önler.print('description: %s' % descrip)
%s
descrip