Menggabungkan string dan integer dengan python

139

Dalam python katakanlah Anda punya

s = "string"
i = 0
print s+i

akan memberi Anda kesalahan sehingga Anda menulis

print s+str(i) 

agar tidak mendapatkan kesalahan.

Saya pikir ini adalah cara yang cukup canggung untuk menangani penggabungan int dan string. Bahkan Java tidak membutuhkan casting eksplisit ke String untuk melakukan penggabungan semacam ini. Apakah ada cara yang lebih baik untuk melakukan penggabungan semacam ini yaitu tanpa casting eksplisit dengan Python?

specialscope
sumber
8
Itu karena Python adalah bahasa yang diketik Kuat ( en.wikipedia.org/wiki/Strong_typing ) (sesuatu untuk di Google agar lebih memahami :)).
mouad
3
Ini akan menyebabkan ambiguitas. Apa akibatnya "1" + 1, 2atau "11"dan mengapa?
Buddy
1
Sobat, saya tidak yakin apa yang Anda pikirkan tetapi tolong jangan berasumsi begitu saja. Masalah saya adalah menggabungkan 2 jenis objek yang berbeda dan saya menemukan solusinya. Saya tidak tahu berapa banyak yang telah Anda program dengan python tetapi apakah Anda pernah mencoba menggabungkan dua string hanya untuk mendapatkan kesalahan ketika salah satunya adalah tipe None? Anda dapat melakukan pemeriksaan eksplisit, tetapi itu hanya sedikit kode tambahan. Hal semacam ini diperlukan ketika Anda perlu mencatat kesalahan.
specialscope
2
Adil s+str(i), dan Anda benar!

Jawaban:

87

Tanpa pemformatan string:

>> print 'Foo',0
Foo 0
Burhan Khalid
sumber
2
Ini akan bekerja dengan baik dengan print tetapi tidak dapat ditugaskan ke variabel sebagai string. Ini memberi Set objek.
specialscope
2
Ini juga menempel di ruang kosong ekstra di antara dua item, kecuali Anda menggunakan print() fungsi v3 dan menyetel beberapa parameternya.
Levon
35

Pemformatan string, menggunakan .format()metode gaya baru (dengan default .format () menyediakan):

 '{}{}'.format(s, i)

Atau yang lebih tua, tapi "masih bertahan", %-memformat:

 '%s%d' %(s, i)

Pada kedua contoh di atas, tidak ada spasi di antara dua item yang digabungkan. Jika diperlukan spasi, itu dapat dengan mudah ditambahkan dalam format string.

Ini memberikan banyak kontrol dan fleksibilitas tentang cara menggabungkan item, spasi di antara item, dll. Untuk detail tentang spesifikasi format, lihat ini .

Levon
sumber
14

Python adalah bahasa yang menarik karena biasanya ada satu (atau dua) cara yang "jelas" untuk menyelesaikan tugas apa pun, namun fleksibilitas tetap ada.

s = "string"
i = 0

print (s + repr(i))

Potongan kode di atas ditulis dalam sintaks Python3 tetapi tanda kurung setelah cetak selalu diperbolehkan (opsional) sampai versi 3 menjadikannya wajib.

Semoga ini membantu.

Caitlin

CaitlinG
sumber
5

format () metode dapat digunakan untuk menggabungkan string dan integer

print(s+"{}".format(i))
Aakash Wadhwa
sumber
1

di python 3.6 dan yang lebih baru, Anda dapat memformatnya seperti ini:

new_string = f'{s} {i}'
print(new_string)

atau hanya:

print(f'{s} {i}')
Kasra Najafi
sumber
Saya tidak membaca pertanyaannya, tetapi jawaban ini adalah yang paling berguna bagi saya: D
Cold_Class
0

jika Anda hanya ingin mencetak, Anda dapat melakukan ini:

print(s , i)
Daniel Jiménez
sumber
0

Anggaplah Anda ingin menggabungkan string dan integer dalam situasi seperti ini:

for i in range(1,11):
   string="string"+i 

dan Anda mendapatkan kesalahan tipe atau penggabungan

Cara terbaik untuk melakukannya adalah dengan melakukan sesuatu seperti ini:

for i in range(1,11):
   print("string",i)    

Ini akan memberi Anda hasil gabungan seperti string 1, string 2, string 3 ... dll

Mustapha Babatunde
sumber