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.