Contoh Ruby:
name = "Spongebob Squarepants"
puts "Who lives in a Pineapple under the sea? \n#{name}."
Rangkaian string Python yang berhasil tampaknya cocok untuk saya.
Contoh Ruby:
name = "Spongebob Squarepants"
puts "Who lives in a Pineapple under the sea? \n#{name}."
Rangkaian string Python yang berhasil tampaknya cocok untuk saya.
name
adalah variabel lokal yang terletak di string, dan dengan Python Anda harus secara eksplisit meneruskan kamus variabel lokal ke pemformat string jika Anda ingin menggunakannya.Jawaban:
Python 3.6 akan menambahkan interpolasi string literal mirip dengan interpolasi string Ruby. Dimulai dengan versi Python (yang dijadwalkan akan dirilis pada akhir 2016), Anda akan dapat memasukkan ekspresi dalam "f-string", misalnya
Sebelum ke 3.6, yang terdekat yang bisa Anda dapatkan adalah
The
%
operator dapat digunakan untuk interpolasi string di Python. Operan pertama adalah string yang akan diinterpolasi, yang kedua dapat memiliki tipe yang berbeda termasuk "pemetaan", memetakan nama bidang dengan nilai yang akan diinterpolasi. Di sini saya menggunakan kamus variabel lokallocals()
untuk memetakan nama bidangname
ke nilainya sebagai variabel lokal.Kode yang sama menggunakan
.format()
metode versi Python terbaru akan terlihat seperti ini:Ada juga
string.Template
kelasnya:sumber
%s
untuk string dan%03d
untuk angka yang diisi hingga 3 digit dengan nol nol di depannya. Bisa saja ditulisprint "%s has %03d" % ("Python", 2)
. Contoh tersebut kemudian menggunakan menempatkan kunci pemetaan dalam tanda kurung setelah%
yang merupakan cara untuk memberi nama penampung yang berarti daripada mengandalkan pesanan mereka dalam string. Anda kemudian melewati kamus yang memetakan nama-nama kunci dengan nilainya. Itu sebabnya Sven menggunakanlocals()
fungsi yang mengembalikan dict yang berisi semua variabel lokal Anda sehingga akan memetakanname
ke nilai namas
sebagai tipe konversi - Python dapat mengonversi apa saja menjadi string. Tetapi tentu saja Anda akan kehilangan kemampuan format khusus dari jenis konversi lainnya.Karena Python 2.6.X Anda mungkin ingin menggunakan:
sumber
%
operator untuk interpolasi string tidak ditinggalkan dalam Python 3.x. docs.python.org/dev/py3k/whatsnew/… mengumumkan rencana untuk mundur%
mulai dari 3.1, tetapi ini tidak pernah terjadi.{}
dapat saya hilangkan.Saya telah mengembangkan paket interpy , yang memungkinkan interpolasi string dengan Python .
Instal saja via
pip install interpy
. Dan kemudian, tambahkan baris# coding: interpy
di awal file Anda!Contoh:
sumber
Interpolasi string Python mirip dengan printf C ()
Jika kamu mencoba:
Tag
%s
akan diganti denganname
variabel. Anda harus melihat ke tag fungsi cetak: http://docs.python.org/library/functions.htmlsumber
print "First is %s, second is %s" % (var1, var2)
.Interpolasi string akan dimasukkan dengan Python 3.6 sebagaimana ditentukan dalam PEP 498 . Anda akan dapat melakukan ini:
Perhatikan bahwa saya membenci Spongebob, jadi menulis ini sedikit menyakitkan. :)
sumber
Anda juga dapat memiliki ini
http://docs.python.org/2/library/string.html#formatstrings
sumber
#
dicetak. Mereka hanya menggunakan sintaksis Ruby.#
karakternya akan dicetak.Pemakaian:
PS: kinerja bisa jadi masalah. Ini berguna untuk skrip lokal, bukan untuk log produksi.
Duplikat:
Pemformatan string Python:% vs. .format
Apa yang setara dengan Python dari menanamkan ekspresi dalam string? (mis. "# {expr}" di Ruby)
Apa yang setara dengan Ruby dari Python, `s =" halo,% s. Di mana% s? " % ("John", "Mary") `
Apakah ada Python yang setara dengan interpolasi string Ruby?
sumber
Untuk Python lama (diuji pada 2.4) solusi teratas menunjukkan jalannya. Kamu bisa melakukan ini:
Dan kamu mengerti
sumber
Python 3.6 dan yang lebih baru memiliki interpolasi string literal menggunakan f-string:
sumber