Saya tidak mengerti apa %s
dan apa yang %d
dilakukan dan bagaimana mereka bekerja.
python
string-formatting
karlzt
sumber
sumber
%s
digunakan dengan konfigurasi mesin pencari. Chrome menggunakan%s
untuk mengganti kata kunci yang dimasukkan di bilah alamat. Python menggunakan%s
cara yang serupa. Dalamprint('description: %s' % descrip)
satu%s
operator yang akan digantikan oleh string teks yang disimpan dalamdescrip
variabel. Kawat gigi bulat mencegah pesan kesalahan di Python 3.dari python 3 doc
%d
adalah untuk bilangan bulat desimal%s
adalah untuk string atau objek umum dan dalam kasus objek, itu akan diubah menjadi stringPerhatikan kode berikut
name ='giacomo' number = 4.3 print('%s %s %d %f %g' % (name, number, number, number, number))
keluarannya akan
seperti yang Anda lihat
%d
akan dipotong menjadi integer,%s
akan mempertahankan format,%f
akan mencetak sebagai float dan%g
digunakan untuk nomor umumjelas
print('%d' % (name))
akan menghasilkan pengecualian; Anda tidak dapat mengubah string menjadi angka
sumber
%s
digunakan untuk angka sebagai gantinya.%s
digunakan sebagai tempat penampung untuk nilai string yang ingin Anda masukkan ke dalam string yang diformat.%d
digunakan sebagai tempat penampung untuk nilai numerik atau desimal.Misalnya (untuk python 3)
print ('%s is %d years old' % ('Joe', 42))
Akan menghasilkan
Joe is 42 years old
sumber
Ini adalah placeholder:
Sebagai contoh:
'Hi %s I have %d donuts' %('Alice', 42)
Baris kode ini akan mengganti% s dengan Alice (str) dan% d dengan 42.
Keluaran:
'Hi Alice I have 42 donuts'
Hal ini dapat dicapai dengan "+" di sebagian besar waktu. Untuk mendapatkan pemahaman yang lebih mendalam tentang pertanyaan Anda, Anda mungkin ingin memeriksa {} / .format () juga. Berikut ini salah satu contohnya: Pemformatan string Python:% vs. .format
juga lihat di sini video tutorial google python @ 40 ', ada beberapa penjelasannya https://www.youtube.com/watch?v=tKTZoB2Vjuk
sumber
Ini semua adalah jawaban yang informatif, tetapi tidak ada yang cukup memahami inti dari perbedaan antara
%s
dan%d
.%s
memberitahu pemformat untuk memanggilstr()
fungsi pada argumen dan karena kita memaksa ke string menurut definisi,%s
pada dasarnya hanya melakukanstr(arg)
.%d
di sisi lain, menyerukanint()
argumen sebelum memanggilstr()
, sepertistr(int(arg))
, Ini akan menyebabkanint
paksaan sertastr
paksaan.Misalnya, saya dapat mengubah nilai hex menjadi desimal,
>>> '%d' % 0x15 '21'
atau potong pelampung.
>>> '%d' % 34.5 '34'
Tapi operasi tersebut akan memunculkan pengecualian jika argumennya bukan angka.
>>> '%d' % 'thirteen' Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: %d format: a number is required, not str
Jadi, jika tujuannya hanya untuk memanggil
str(arg)
, maka%s
sudah cukup, tetapi jika Anda membutuhkan pemformatan tambahan (seperti memformat tempat desimal mengambang) atau paksaan lainnya, maka diperlukan simbol format lainnya.Dengan
f-string
notasi, saat Anda membiarkan pemformat keluar, defaultnya adalahstr
.>>> 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'
Hal yang sama berlaku dengan
string.format
; defaultnya adalahstr
.>>> a = 1 >>> '{}'.format(a) '1' >>> '{!s}'.format(a) '1' >>> '{:d}'.format(a) '1'
sumber
The
%d
dan%s
tali format "perintah" digunakan untuk string format. Ini%d
untuk angka, dan%s
untuk string.Sebagai contoh:
print("%s" % "hi")
dan
print("%d" % 34.6)
Meneruskan beberapa argumen:
print("%s %s %s%d" % ("hi", "there", "user", 123456))
akan kembalihi there user123456
sumber
%d
dan%s
merupakan placeholder, mereka bekerja sebagai variabel yang dapat diganti. Misalnya, jika Anda membuat 2 variabelvariable_one = "Stackoverflow" variable_two = 45
Anda dapat menetapkan variabel tersebut ke kalimat dalam string menggunakan tupel variabel.
variable_3 = "I was searching for an answer in %s and found more than %d answers to my question"
Perhatikan bahwa
%s
berfungsi untuk String dan%d
berfungsi untuk variabel numerik atau desimal.jika dicetak
variable_3
maka akan terlihat seperti iniSaya sedang mencari jawaban di StackOverflow dan menemukan lebih dari 45 jawaban atas pertanyaan saya.
sumber
Mereka adalah penentu format. Mereka digunakan ketika Anda ingin memasukkan nilai ekspresi Python Anda ke dalam string, dengan format tertentu diberlakukan.
Lihat Menyelam ke Python untuk pengenalan yang relatif mendetail.
sumber
Sesuai standar terbaru, begitulah seharusnya dilakukan.
print("My name is {!s} and my number is{:d}".format("Agnel Vishal",100))
Lakukan pengecekan python3.6 docs dan sample program
sumber
Jika Anda ingin menghindari% s atau% d maka ..
name = 'marcog' number = 42 print ('my name is',name,'and my age is:', number)
Keluaran:
my name is marcog and my name is 42
sumber
%s
dan%d
.print
adalah fungsi di Python 3, bukan pernyataan.% s digunakan untuk menampung spasi untuk string% d digunakan untuk menampung spasi untuk angka
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))
Keluaran program
video ini membahas lebih dalam tentang tip itu https://www.youtube.com/watch?v=4zN5YsuiqMA
sumber
ngomong-ngomong ...
python3.6 hadir dengan
f-strings
yang membuat segalanya lebih mudah dalam pemformatan!sekarang jika versi python Anda lebih besar dari 3.6 Anda dapat memformat string Anda dengan metode yang tersedia ini:
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
sumber
Berikut adalah contoh dasar untuk mendemonstrasikan pemformatan string Python dan cara baru untuk melakukannya.
my_word = 'epic' my_number = 1 print('The %s number is %d.' % (my_word, my_number)) # traditional substitution with % operator
// Angka epiknya adalah 1.
print(f'The {my_word} number is {my_number}.') # newer format string style
// Angka epiknya adalah 1.
Keduanya memiliki cetakan yang sama.
sumber