Nối và nối chuỗi trong Python: toán tử +, hàm nối, v.v.

Kinh doanh

Sau đây là mô tả về cách nối và nối chuỗi str trong Python.

  • Nối và hợp nhất nhiều chuỗi:+,+=nhà điều hành
  • Nối và kết hợp số và chuỗi:+,+=nhà điều hành,str(),format(),chuỗi f
  • Nối và kết hợp danh sách (mảng) chuỗi thành một chuỗi duy nhất:join()
  • Nối và kết hợp danh sách (mảng) số thành một chuỗi duy nhất:join(),str()

Nối và hợp nhất nhiều chuỗi:+,+=nhà điều hành

sự liên quan:+nhà điều hành

Toán tử ++ có thể được sử dụng để nối các chuỗi ký tự và biến chuỗi sau

  • … ‘
  • “…”
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

sự liên quan:+=nhà điều hành

Toán tử + =, một toán tử gán tích lũy, cũng có thể được sử dụng. Biến chuỗi ở phía bên trái được nối với chuỗi ở phía bên phải và được gán và cập nhật.

s1 += s2
print(s1)
# aaabbb

Nếu bạn muốn thêm một chuỗi vào cuối một biến chuỗi, chỉ cần xử lý biến chuỗi và bất kỳ chuỗi ký tự nào (hoặc một biến chuỗi khác) bằng toán tử + =.

s = 'aaa'

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

Nối liên tiếp các chuỗi ký tự

Nếu bạn chỉ viết các ký tự chuỗi cạnh nhau, các ký tự chuỗi sẽ được nối với nhau.

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

Có thể chấp nhận khoảng cách giữa hai dòng hoặc dấu gạch chéo ngược ngắt dòng (được coi là phần tiếp theo).

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

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

Có một kỹ thuật sử dụng điều này để viết các chuỗi dài trên nhiều dòng trong mã.

Phương pháp viết này không thể thực hiện được đối với các biến chuỗi.

# s = s1 s2 s3
# SyntaxError: invalid syntax

Nối số và nối chuỗi / ghép nối:+,+=nhà điều hành,str(),format(),chuỗi f

Thao tác A + của một kiểu khác dẫn đến lỗi.

s1 = 'aaa'
s2 = 'bbb'

i = 100
f = 0.25

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

Nếu bạn muốn nối một giá trị số (ví dụ: kiểu số nguyên int hoặc kiểu dấu phẩy động float) với một chuỗi, hãy chuyển đổi giá trị số thành kiểu chuỗi với str () và sau đó nối chúng với toán tử + (hoặc + = toán tử ).

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

Nếu bạn muốn chuyển đổi định dạng của một số, chẳng hạn như điền số 0 hoặc vị trí thập phân, hãy sử dụng hàm format () hoặc định dạng phương thức chuỗi ().

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

Tất nhiên, cũng có thể nhúng trực tiếp giá trị của một biến vào một chuỗi mà không cần định dạng. Cách viết này đơn giản hơn so với sử dụng toán tử +.

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

Xem bài viết sau để biết chi tiết về cách chỉ định định dạng.

Kể từ Python 3.6, một cơ chế được gọi là chuỗi f (f-string) cũng đã được giới thiệu, cơ chế này thậm chí còn đơn giản hơn để viết so với định dạng ().

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

Nối và nối danh sách (mảng) chuỗi:join()

Phương thức chuỗi join () có thể được sử dụng để nối một danh sách các chuỗi thành một chuỗi duy nhất.

Sau đây là cách viết nó.

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

Gọi phương thức join () với ‘chuỗi để chèn giữa’ và chuyển [danh sách các chuỗi để nối] làm đối số.

Nếu một chuỗi trống được sử dụng, [danh sách các chuỗi sẽ được nối] sẽ được nối đơn giản, nếu sử dụng dấu phẩy, các chuỗi sẽ được phân tách bằng dấu phẩy và nếu sử dụng ký tự dòng mới, mỗi phần tử chuỗi sẽ được viết mới.

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

Mặc dù chỉ có một ví dụ về danh sách được đưa ra ở đây, các đối tượng có thể lặp lại khác như bộ giá trị cũng có thể được chỉ định làm đối số để tham gia ().

Ngược lại với join (), split () được sử dụng để tách một chuỗi được phân tách bằng dấu phân cách cụ thể và lấy nó dưới dạng danh sách.

Nối và kết hợp danh sách (mảng) số dưới dạng chuỗi:join(),str()

Lỗi xảy ra nếu đối số tham gia () là danh sách có các phần tử không phải là chuỗi.

l = [0, 1, 2]

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

Để nối danh sách các số thành một chuỗi, hãy áp dụng hàm str () cho từng phần tử trong ký hiệu hiểu danh sách để chuyển đổi các số thành một chuỗi, rồi nối chúng với join ().

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

Nó cũng có thể được viết dưới dạng một biểu thức trình tạo, là một phiên bản trình tạo của danh sách dễ hiểu. Biểu thức trình tạo được đặt trong dấu ngoặc đơn, nhưng có thể bỏ qua dấu ngoặc đơn nếu biểu thức trình tạo là đối số duy nhất của một hàm hoặc phương thức.

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

Biểu thức trình tạo nói chung có lợi thế là sử dụng ít bộ nhớ hơn so với khả năng hiểu danh sách, nhưng không có lợi thế cụ thể nào khi sử dụng biểu thức trình tạo vì tham gia () chuyển đổi trình tạo thành danh sách trong xử lý nội bộ của nó. Trên thực tế, sử dụng cách hiểu danh sách ngay từ đầu sẽ nhanh hơn một chút.

Để biết thêm thông tin về cách hiểu danh sách và biểu thức trình tạo, hãy xem bài viết sau.