Trong lập trình Python, thao tác với chuỗi là một phần không thể thiếu. Một trong những thao tác cơ bản và thường xuyên được sử dụng là nối chuỗi. Bài viết này sẽ giới thiệu khái niệm nối chuỗi trong Python, cùng một số phương pháp thực hiện đơn giản, dễ áp dụng vào dự án của bạn.
Các điểm chính
Khi đọc xong bài viết, bạn sẽ:
- Hiểu rõ khái niệm định dạng chuỗi trong Python: Bạn sẽ nắm được định nghĩa cơ bản về định dạng chuỗi và lý do tại sao nó quan trọng trong lập trình.
- Nắm vững 3 phương pháp định dạng chuỗi phổ biến nhất trong Python: Bạn sẽ học được cách sử dụng toán tử
%
, phương thức .format()
và f-string (formatted string literals). - So sánh được ưu và nhược điểm của từng phương pháp: Bạn sẽ biết khi nào nên sử dụng phương pháp nào để đạt hiệu quả tốt nhất.
- Biết cách sử dụng class template để định dạng chuỗi nâng cao: Bạn sẽ khám phá một phương pháp linh hoạt và mạnh mẽ hơn, phù hợp cho những tình huống phức tạp.
- Ứng dụng kiến thức vào thực tế: Bạn có thể áp dụng các kỹ năng này để tạo ra những chuỗi thông báo thân thiện, báo cáo dữ liệu dễ đọc và các chương trình tương tác người dùng hiệu quả.
Định dạng chuỗi trong Python là gì?
Định dạng chuỗi (String formatting) trong Python là quá trình tạo ra một chuỗi mới bằng cách chèn giá trị của các biểu thức (thường là giá trị số hoặc biến) vào trong một chuỗi đã có sẵn. Toán tử nối chuỗi thông thường của Python (+
) không chấp nhận toán hạng không phải là chuỗi. Do đó, Python cung cấp các kỹ thuật định dạng chuỗi sau:
- Sử dụng toán tử
%
- Sử dụng phương thức
format()
của lớp str - Sử dụng
f-string
(chuỗi f) - Sử dụng lớp String Template

Sử dụng toán tử % để định dạng chuỗi trong Python
Toán tử %
(modulo) thường được gọi là toán tử định dạng chuỗi. Toán tử này nhận vào một chuỗi định dạng cùng với một tập các biến, kết hợp lại để tạo ra một chuỗi mới chứa các giá trị của biến được định dạng theo cách đã chỉ định.
Ví dụ để chèn một chuỗi vào một chuỗi định dạng bằng cách sử dụng toán tử %
, chúng ta sử dụng %s
như trong ví dụ dưới đây:
ten_quan = "Cơm Tấm Sài Gòn"
print("Chào mừng đến với %s!" % ten_quan)
Kết quả sẽ như sau:
Chào mừng đến với Cơm Tấm Sài Gòn!
Giải thích:
ten_quan = "Cơm Tấm Sài Gòn"
: Khởi tạo biếnten_quan
.print("Chào mừng đến với %s!" % ten_quan)
: Sử dụng toán tử%
.- Chuỗi
"Chào mừng đến với %s!"
là chuỗi định dạng. Trong chuỗi này,%s
là một “ký tự giữ chỗ”. Toán tử%
ở giữa sẽ thay thế%s
bằng giá trị của biếnten_quan
.
Định dạng chuỗi bằng phương thức format()
format()
là một phương thức được tích hợp sẵn trong lớp str (chuỗi) của Python. Phương thức format()
hoạt động bằng cách định nghĩa các “vị trí giữ chỗ” (placeholders) bên trong một chuỗi, sử dụng dấu ngoặc nhọn {}
. Sau đó, những vị trí này được thay thế bằng các giá trị được truyền vào làm đối số của phương thức.
Ví dụ:
loi_chao = "Xin chào, {}! Hôm nay trời {}."
print(loi_chao.format("Lan", "đẹp"))
Khi chạy đoạn mã trên, ta sẽ thấy kết quả sau:
Xin chào, Lan! Hôm nay trời đẹp.
Giải thích:
loi_chao = "Xin chào, {}! Hôm nay trời {}."
: Khởi tạo một chuỗiloi_chao
có chứa hai vị trí giữ chỗ{}
.print(loi_chao.format("Lan", "đẹp"))
: Gọi phương thứcformat()
trên chuỗiloi_chao
."Lan"
: được truyền vào để thay thế cho vị trí{}
đầu tiên."đẹp"
: được truyền vào để thay thế cho vị trí{}
thứ hai.- Kết quả sau khi thay thế và in ra là: Xin chào, Lan! Hôm nay trời đẹp.
Nối chuỗi trong Python với f-string
F-string, còn được gọi là “chuỗi định dạng”, được sử dụng để nhúng các biểu thức vào bên trong chuỗi ký tự. Chữ “f” trong f-string là viết tắt của từ “formatted” (định dạng) và việc thêm “f” vào trước một chuỗi sẽ tạo ra một f-string. Dấu ngoặc nhọn {}
bên trong chuỗi sẽ đóng vai trò là “vùng giữ chỗ” (placeholder) để chứa các biến, biểu thức, hoặc lời gọi hàm.
Để thấy rõ cách f-string hoạt động với các biểu thức, chúng ta hãy xét ví dụ tính tiền mua hàng sau:
gia_but_bi = 2500 # Giá một chiếc bút bi
so_luong_but = 3
gia_quyen_vo = 8000 # giá một quyển vở
tong_tien = f'Tổng tiền mua {so_luong_but} bút bi và 1 quyển vở là: {gia_but_bi * so_luong_but + gia_quyen_vo} đồng'
print(tong_tien)
Khi chạy đoạn mã trên, ta sẽ nhận được kết quả là:
Tổng tiền mua 3 bút bi và 1 quyển vở là: 15500 đồng
Giải thích:
gia_but_bi
,so_luong_but
vàgia_quyen_vo
: Đây là các biến lưu trữ giá và số lượng sản phẩm.f'...'
: Đây là cách tạo một f-string. Chữf
đặt trước dấu nháy đơn (hoặc nháy kép) để báo cho Python biết đây là một f-string.{so_luong_but}
và{gia_but_bi * so_luong_but + gia_quyen_vo}
: Đây là các “vùng giữ chỗ” bên trong f-string.{so_luong_but}
: sẽ được thay thế bằng giá trị của biếnso_luong_but
(tức là 3).{gia_but_bi * so_luong_but + gia_quyen_vo}
: sẽ được thay thế bằng kết quả của biểu thứcgia_but_bi * so_luong_but + gia_quyen_vo
. Biểu thức này sẽ tính tổng tiền dựa trên giá và số lượng.print(tong_tien)
: Dòng lệnh này in ra giá trị của biếntong_tien
.
Sử dụng class template để nối chuỗi trong Python
Lớp Template thuộc module string cung cấp một phương thức định dạng chuỗi bằng cách sử dụng các “placeholder” (chỗ dành sẵn). Các placeholder này được xác định bằng một dấu đô la ($
) theo sau là một định danh (tên).
Ví dụ:
from string import Template
# Định nghĩa chuỗi template
mau_tin_nhan = "Xin chào $ten, chúc mừng bạn đã trúng thưởng $phan_thuong!"
# Tạo đối tượng Template
doi_tuong_template = Template(mau_tin_nhan)
# Cung cấp giá trị cho các placeholder
tin_nhan_moi = doi_tuong_template.substitute(ten="An", phan_thuong="một chiếc xe máy")
print(tin_nhan_moi)
tin_nhan_moi_2 = doi_tuong_template.substitute(ten= "Bình", phan_thuong="một chuyến du lịch Phú Quốc")
print(tin_nhan_moi_2)
Khi chạy đoạn mã này, kết quả sẽ như sau:
Xin chào An, chúc mừng bạn đã trúng thưởng một chiếc xe máy!
Xin chào Bình, chúc mừng bạn đã trúng thưởng một chuyến du lịch Phú Quốc!
Giải Thích:
from string import Template
: Dòng này nhập (import
) lớpTemplate
từ modulestring
.mau_tin_nhan = "Xin chào $ten, chúc mừng bạn đã trúng thưởng $phan_thuong!"
: Định nghĩa một chuỗimau_tin_nhan
. Trong chuỗi này,$ten
và$phan_thuong
là các placeholder.doi_tuong_template = Template(mau_tin_nhan)
: Tạo một đối tượngTemplate
từ chuỗimau_tin_nhan
. Đối tượng này sẽ “nhớ” cấu trúc của chuỗi và các placeholder cần điền.tin_nhan_moi = doi_tuong_template.substitute(ten="An", phan_thuong="một chiếc xe máy")
: Sử dụng phương thứcsubstitute()
của đối tượngTemplate
để điền giá trị vào các placeholder. Cụ thể,ten
được thay bằng “An”, vàphan_thuong
được thay bằng “một chiếc xe máy”. Kết quả được gán cho biếntin_nhan_moi
.tin_nhan_moi_2 = ...
: Tương tự tạo thêm một tin nhắn với các giá trị khác.
Lời kết
Như vậy, chúng ta đã cùng tìm hiểu chi tiết về các cách định dạng chuỗi trong Python, từ sử dụng toán tử %, phương thức format(), f-string cho đến class template. Mỗi phương pháp đều có ưu điểm riêng, giúp bạn linh hoạt trong việc xử lý và hiển thị chuỗi. Hy vọng những kiến thức này sẽ hữu ích, giúp bạn tối ưu hóa code và lập trình hiệu quả hơn.
Mọi người cũng đọc