%Operator string ini akan "ditinggalkan pada Python 3.1 dan dihapus nanti" docs.python.org/release/3.0.1/whatsnew/… sekarang saya bertanya-tanya cara apa yang paling disarankan untuk kompatibilitas dan keamanan versi.
cregox
2
@Cawas Saya tahu ini cukup terlambat, tapi saya suka menggunakan str.format(). Mis .: query = "SELECT * FROM {named_arg}"; query.format(**kwargs), di mana queryadalah format string dan kwargsmerupakan kamus dengan kunci yang cocok dengan named_args dalam format string.
Edwin
4
@Cawas Ya, kecuali Adam digunakan notasi tuple, di mana {0}, {1}, {2}dan sebagainya sesuai dengan indeks tuple 0, 1dan 2masing-masing. Atau, Anda juga dapat menamai args (like {named_arg}) dan mengaturnya masing-masing dalam metode format, seperti:'Hi {fname} {lname}!'.format(fname='John', lname='Doe')
Edwin
2
@bignose Anda telah menandai kedua pertanyaan sebagai duplikat satu sama lain seperti google.com/…
Tampaknya tidak ada gunanya memberikan jawaban duplikat ini. Ini satu lagi: '% (string_goes_here) s hello world% (string_goes_here) s hello world% (string_goes_here) s'% {'string_goes_here': s,}. Ada kemungkinan yang tak terbatas jumlahnya.
mhawke
3
mhawke: saya memposting pesan sebelum browser saya memuat ulang halaman jadi saya tidak tahu pada saat itu bahwa pertanyaan itu sudah dijawab. Anda tidak perlu bersikap kasar !!.
Lucas S.
2
@Lucas: Saya rasa Anda mungkin memerlukan waktu 13 menit untuk mengetik jawaban Anda :) dan terima kasih atas suara yang tidak diberikan ... sangat kami hargai.
mhawke
13
Tergantung pada apa yang Anda maksud dengan lebih baik. Ini berfungsi jika tujuan Anda adalah penghapusan redundansi.
s='foo'
string='%s bar baz %s bar baz %s bar baz'%(3*(s,))
Saya kira contoh dalam pertanyaan itu bukan tentang 'halo dunia' yang diulang, tetapi template nyata tanpa duplikasi. Itulah mengapa saya tidak memilih.
Gra
1
Fstrings
Jika Anda menggunakan Python 3.6+Anda dapat menggunakan yang baru disebut f-stringsyang merupakan singkatan dari string yang diformat dan dapat digunakan dengan menambahkan karakter fdi awal string untuk mengidentifikasi ini sebagai f-string .
price =123
name ="Jerry"print(f"{name}!!, {price} is much, isn't {price} a lot? {name}!")>Jerry!!,123is much, isn't 123 a lot? Jerry!
Manfaat utama menggunakan f-string adalah lebih mudah dibaca, lebih cepat, dan menawarkan kinerja yang lebih baik:
Sumber Pandas untuk Semua Orang: Analisis Data Python, Oleh Daniel Y. Chen
Tolak ukur
Tidak diragukan lagi bahwa yang baru f-stringslebih mudah dibaca, karena Anda tidak perlu memetakan ulang stringnya, tetapi apakah itu lebih cepat seperti yang dinyatakan dalam kutipan yang disebutkan?
price =123
name ="Jerry"def new():
x = f"{name}!!, {price} is much, isn't {price} a lot? {name}!"def old():
x ="{1}!!, {0} is much, isn't {0} a lot? {1}!".format(price, name)import timeit
print(timeit.timeit('new()', setup='from __main__ import new', number=10**7))print(timeit.timeit('old()', setup='from __main__ import old', number=10**7))>3.8741058271543776#new>5.861819514350163#old
Menjalankan tes 10 Juta tampaknya yang baru f-stringssebenarnya lebih cepat dalam pemetaan.
%
Operator string ini akan "ditinggalkan pada Python 3.1 dan dihapus nanti" docs.python.org/release/3.0.1/whatsnew/… sekarang saya bertanya-tanya cara apa yang paling disarankan untuk kompatibilitas dan keamanan versi.str.format()
. Mis .:query = "SELECT * FROM {named_arg}"; query.format(**kwargs)
, di manaquery
adalah format string dankwargs
merupakan kamus dengan kunci yang cocok dengannamed_arg
s dalam format string.{0}
,{1}
,{2}
dan sebagainya sesuai dengan indeks tuple0
,1
dan2
masing-masing. Atau, Anda juga dapat menamai args (like{named_arg}
) dan mengaturnya masing-masing dalam metode format, seperti:'Hi {fname} {lname}!'.format(fname='John', lname='Doe')
Jawaban:
Anda dapat menggunakan pemformatan string lanjutan , tersedia di Python 2.6 dan Python 3.x:
sumber
result = '{st} hello world {st} hello world {st}'.format(st=incoming)
Anda mungkin ingin membaca ini untuk mendapatkan pemahaman: Operasi Pemformatan String .
sumber
Anda dapat menggunakan jenis pemformatan kamus:
sumber
Tergantung pada apa yang Anda maksud dengan lebih baik. Ini berfungsi jika tujuan Anda adalah penghapusan redundansi.
sumber
sumber
Fstrings
Jika Anda menggunakan
Python 3.6+
Anda dapat menggunakan yang baru disebutf-strings
yang merupakan singkatan dari string yang diformat dan dapat digunakan dengan menambahkan karakterf
di awal string untuk mengidentifikasi ini sebagai f-string .Sumber Pandas untuk Semua Orang: Analisis Data Python, Oleh Daniel Y. Chen
Tolak ukur
Tidak diragukan lagi bahwa yang baru
f-strings
lebih mudah dibaca, karena Anda tidak perlu memetakan ulang stringnya, tetapi apakah itu lebih cepat seperti yang dinyatakan dalam kutipan yang disebutkan?Menjalankan tes 10 Juta tampaknya yang baru
f-strings
sebenarnya lebih cepat dalam pemetaan.sumber