Menggabungkan dan mencantumkan rentetan dalam Python: + operator, menyertai fungsi, dsb.

Perniagaan

Berikut ialah penerangan tentang cara menggabungkan dan menyertai string str dalam Python.

  • Menggabungkan dan menggabungkan berbilang rentetan:+,+=pengendali
  • Menggabungkan dan menggabungkan nombor dan rentetan:+,+=pengendali,str(),format(),rentetan f
  • Gabungkan dan gabungkan senarai (tatasusunan) rentetan menjadi satu rentetan:join()
  • Gabungkan dan gabungkan senarai (tatasusunan) nombor menjadi satu rentetan:join(),str()

Menggabungkan dan menggabungkan berbilang rentetan:+,+=pengendali

sambungan:+pengendali

Operator ++ boleh digunakan untuk menggabungkan literal rentetan dan pembolehubah rentetan berikut

  • …’
  • “…”
s = 'aaa' + 'bbb' + 'ccc'
print(s)
# aaabbbccc

s1 = 'aaa'
s2 = 'bbb'
s3 = 'ccc'

s = s1 + s2 + s3
print(s)
# aaabbbccc

s = s1 + s2 + s3 + 'ddd'
print(s)
# aaabbbcccddd

sambungan:+=pengendali

Pengendali +=, pengendali tugasan kumulatif, juga boleh digunakan. Pembolehubah rentetan di sebelah kiri digabungkan dengan rentetan di sebelah kanan, dan diperuntukkan dan dikemas kini.

s1 += s2
print(s1)
# aaabbb

Jika anda ingin menambah rentetan pada penghujung pembolehubah rentetan, hanya proses pembolehubah rentetan dan sebarang literal rentetan (atau pembolehubah rentetan lain) dengan pengendali +=.

s = 'aaa'

s += 'xxx'
print(s)
# aaaxxx

Penggabungan berturut-turut literal rentetan

Jika anda hanya menulis literal rentetan sebelah menyebelah, literal rentetan akan digabungkan.

s = 'aaa''bbb''ccc'
print(s)
# aaabbbccc

Ia boleh diterima untuk mempunyai ruang di antara dua baris atau pemisah garis segaris ke belakang (dianggap sebagai sambungan).

s = 'aaa'  'bbb'    'ccc'
print(s)
# aaabbbccc

s = 'aaa'\
    'bbb'\
    'ccc'
print(s)
# aaabbbccc

Terdapat teknik untuk menggunakan ini untuk menulis rentetan panjang pada berbilang baris dalam kod.

Kaedah penulisan ini tidak mungkin untuk pembolehubah rentetan.

# s = s1 s2 s3
# SyntaxError: invalid syntax

Penggabungan/penggabungan berangka dan rentetan:+,+=pengendali,str(),format(),rentetan f

Operasi A + daripada jenis yang berbeza menghasilkan ralat.

s1 = 'aaa'
s2 = 'bbb'

i = 100
f = 0.25

# s = s1 + i
# TypeError: must be str, not int

Jika anda ingin menggabungkan nilai berangka (cth, integer jenis int atau floating-point type float) dengan rentetan, tukarkan nilai berangka kepada jenis rentetan dengan str() dan kemudian gabungkannya dengan operator + (atau += operator ).

s = s1 + '_' + str(i) + '_' + s2 + '_' + str(f)
print(s)
# aaa_100_bbb_0.25

Jika anda ingin menukar format nombor, seperti pengisian sifar atau tempat perpuluhan, gunakan fungsi format() atau format kaedah rentetan().

s = s1 + '_' + format(i, '05') + '_' + s2 + '_' + format(f, '.5f')
print(s)
# aaa_00100_bbb_0.25000

s = '{}_{:05}_{}_{:.5f}'.format(s1, i, s2, f)
print(s)
# aaa_00100_bbb_0.25000

Sudah tentu, ia juga mungkin untuk membenamkan nilai pembolehubah secara langsung dalam rentetan tanpa pemformatan. Ini lebih mudah untuk ditulis daripada menggunakan operator +.

s = '{}_{}_{}_{}'.format(s1, i, s2, f)
print(s)
# aaa_100_bbb_0.25

Lihat artikel berikut untuk butiran tentang cara menentukan format.

Sejak Python 3.6, mekanisme yang dipanggil f-strings (f-string) juga telah diperkenalkan, yang lebih mudah untuk ditulis daripada format().

s = f'{s1}_{i:05}_{s2}_{f:.5f}'
print(s)
# aaa_00100_bbb_0.25000

s = f'{s1}_{i}_{s2}_{f}'
print(s)
# aaa_100_bbb_0.25

Gabungkan dan gabungkan senarai (tatasusunan) rentetan:join()

Kaedah rentetan join() boleh digunakan untuk menggabungkan senarai rentetan menjadi rentetan tunggal.

Berikut adalah cara menulisnya.

'String to be inserted between'.join([List of strings to be concatenated])

Panggil kaedah join() dengan ‘rentetan untuk memasukkan antara’ dan lulus [senarai rentetan untuk digabungkan] sebagai hujah.

Jika rentetan kosong digunakan, [senarai rentetan yang akan digabungkan] akan digabungkan secara ringkas, jika koma digunakan, rentetan akan dipisahkan koma dan jika aksara baris baharu digunakan, setiap elemen rentetan akan dibarisi baharu.

l = ['aaa', 'bbb', 'ccc']

s = ''.join(l)
print(s)
# aaabbbccc

s = ','.join(l)
print(s)
# aaa,bbb,ccc

s = '-'.join(l)
print(s)
# aaa-bbb-ccc

s = '\n'.join(l)
print(s)
# aaa
# bbb
# ccc

Walaupun hanya contoh senarai diberikan di sini, objek lelaran lain seperti tupel boleh ditentukan sebagai argumen untuk menyertai() juga.

Berbeza dengan join(), split() digunakan untuk memisahkan rentetan yang dibatasi oleh pembatas tertentu dan mendapatkannya sebagai senarai.

Gabungkan dan gabungkan senarai (tatasusunan) nombor sebagai rentetan:join(),str()

Ralat berlaku jika hujah untuk menyertai() ialah senarai yang elemennya bukan rentetan.

l = [0, 1, 2]

# s = '-'.join(l)
# TypeError: sequence item 0: expected str instance, int found

Untuk menggabungkan senarai nombor menjadi rentetan tunggal, gunakan fungsi str() pada setiap elemen dalam tatatanda pemahaman senarai untuk menukar nombor menjadi rentetan, dan kemudian gabungkannya dengan join().

s = '-'.join([str(n) for n in l])
print(s)
# 0-1-2

Ia juga boleh ditulis sebagai ungkapan penjana, yang merupakan versi penjana bagi pemahaman senarai. Ungkapan penjana disertakan dalam kurungan, tetapi kurungan boleh ditinggalkan jika ungkapan penjana adalah satu-satunya hujah kepada fungsi atau kaedah.

s = '-'.join((str(n) for n in l))
print(s)
# 0-1-2

s = '-'.join(str(n) for n in l)
print(s)
# 0-1-2

Ungkapan penjana umumnya mempunyai kelebihan menggunakan memori yang kurang daripada pemahaman senarai, tetapi tiada kelebihan khusus untuk menggunakan ungkapan penjana sejak join() menukar penjana kepada senarai dalam pemprosesan dalamannya. Malah, lebih cepat sedikit untuk menggunakan pemahaman senarai dari awal.

Untuk mendapatkan maklumat lanjut tentang pemahaman senarai dan ungkapan penjana, lihat artikel berikut.

Copied title and URL