Bagaimana cara memasukkan variabel ke dalam string?


246

Saya ingin menempatkan intke dalam string. Inilah yang saya lakukan saat ini:

num = 40
plot.savefig('hanning40.pdf') #problem line

Saya harus menjalankan program untuk beberapa angka yang berbeda, jadi saya ingin melakukan perulangan. Tetapi memasukkan variabel seperti ini tidak berfungsi:

plot.savefig('hanning', num, '.pdf')

Bagaimana cara saya memasukkan variabel ke string Python?

Jawaban:


164
plot.savefig('hanning(%d).pdf' % num)

The %operator, ketika mengikuti string, memungkinkan Anda untuk memasukkan nilai ke dalam string melalui kode Format (yang %ddalam hal ini). Untuk detail lebih lanjut, lihat dokumentasi Python:

https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting


39
Perhatikan bahwa %operator tidak digunakan lagi pada Python 3.1. Cara baru yang disukai adalah menggunakan .format()metode seperti yang dibahas dalam PEP 3101 dan disebutkan dalam jawaban Dan McDougall.
Chris Mueller

496

Oh, banyak, banyak cara ...

Rangkaian string:

plot.savefig('hanning' + str(num) + '.pdf')

Penentu Konversi:

plot.savefig('hanning%s.pdf' % num)

Menggunakan nama variabel lokal:

plot.savefig('hanning%(num)s.pdf' % locals()) # Neat trick

Menggunakan str.format():

plot.savefig('hanning{0}.pdf'.format(num)) # Note: This is the new preferred way

Menggunakan f-string:

plot.savefig(f'hanning{num}.pdf') # added in Python 3.6

Menggunakan string.Template:

plot.savefig(string.Template('hanning${num}.pdf').substitute(locals()))

16
Untuk menggunakan operator format string dengan beberapa argumen, satu dapat menggunakan tuple sebagai operan: 'foo %d, bar %d' % (foo, bar).
fiedl

12
Trik rapi Anda berfungsi dengan sintaks format baru juga:plot.savefig('hanning{num}s.pdf'.format(**locals()))
pix

13
Dengan diperkenalkannya f-string di Python 3.6, ini sekarang dapat ditulis sebagai plot.savefig(f'hanning{num}.pdf'). Saya menambahkan jawaban dengan info ini.
joelostblom

memiliki masalah menggunakan penduduk lokal () di dalam fungsi yang memanggil variabel global; digunakan% global () sebagai gantinya yang bekerja
lobi


17

Tidak yakin persis apa yang dilakukan semua kode yang Anda posting, tetapi untuk menjawab pertanyaan yang diajukan dalam judul, Anda dapat menggunakan + sebagai fungsi concat string normal dan juga str ().

"hello " + str(10) + " world" = "hello 10 world"

Semoga itu bisa membantu!


6
Walaupun jawaban ini benar, maka +harus dihindari karena sangat mahal
slayton

6

Secara umum, Anda dapat membuat string menggunakan:

stringExample = "someString " + str(someNumber)
print(stringExample)
plot.savefig(stringExample)

4

Jika Anda ingin memasukkan beberapa nilai ke dalam string, Anda dapat menggunakannya format

nums = [1,2,3]
plot.savefig('hanning{0}{1}{2}.pdf'.format(*nums))

Akan menghasilkan string hanning123.pdf. Ini bisa dilakukan dengan array apa pun.


3

Saya memiliki kebutuhan untuk versi yang diperluas dari ini: alih-alih menyematkan nomor tunggal dalam sebuah string, saya perlu membuat serangkaian nama file dari bentuk 'file1.pdf', 'file2.pdf' dll. Ini adalah caranya bekerja:

['file' + str(i) + '.pdf' for i in range(1,4)]

-1

Anda hanya perlu memasukkan num varriable ke string menggunakan

str(num)
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.