Posted in

Căn lề và định dạng chuỗi trong Python

String alignment and formatting
String alignment and formatting

Trong lập trình Python, chuỗi (string) là một trong những kiểu dữ liệu cơ bản và được sử dụng thường xuyên nhất. Từ việc in ra thông báo đơn giản cho đến xây dựng báo cáo phức tạp, mọi thứ đều gắn liền với chuỗi. Tuy nhiên, không phải lúc nào chỉ cần in chuỗi ra màn hình là xong. Trong nhiều tình huống, mình cần căn lề, sắp xếp, hoặc định dạng dữ liệu sao cho dễ đọc và chuyên nghiệp hơn.

Ví dụ, khi in bảng điểm sinh viên hay báo cáo tài chính, nếu chuỗi không được căn chỉnh hợp lý, dữ liệu sẽ bị lộn xộn và khó theo dõi. Bài viết này mình và bạn sẽ đi sâu vào căn lề và định dạng chuỗi trong Python, từ những kiến thức cơ bản đến những kỹ thuật nâng cao, giúp code của bạn trở nên rõ ràng và dễ duy trì hơn.

1. Tổng quan về chuỗi trong Python

Chuỗi (string) trong Python là một dãy ký tự được đặt trong cặp dấu nháy đơn '...' hoặc nháy kép "...". Python cung cấp rất nhiều phương thức để thao tác với chuỗi, và trong đó có những công cụ mạnh mẽ để định dạng và căn chỉnh.

Tại sao việc căn lề và định dạng lại quan trọng?

  • Dễ đọc: Dữ liệu được căn lề đẹp mắt sẽ giúp người đọc nhanh chóng nắm bắt thông tin.
  • Chuyên nghiệp: Báo cáo hay log hệ thống được trình bày rõ ràng sẽ tạo ấn tượng tốt hơn.
  • Tiện dụng: Khi xuất dữ liệu ra file hoặc hiển thị trên giao diện, định dạng đúng chuẩn sẽ giảm thiểu nhầm lẫn.

Ví dụ thực tế: nếu bạn in danh sách sản phẩm kèm giá tiền mà không căn chỉnh, giá sẽ lệch hàng và gây khó chịu cho người đọc.

2. Căn lề chuỗi trong Python

2.1. Phương pháp dùng các hàm dựng sẵn

Python cung cấp ba phương thức phổ biến để căn lề chuỗi:

  • ljust(width) → Căn trái
  • rjust(width) → Căn phải
  • center(width) → Căn giữa

Ví dụ:

# Example: Align string using built-in methods
text = "Python"

print(text.ljust(10, "-"))   # Align left
print(text.rjust(10, "-"))   # Align right
print(text.center(10, "-"))  # Align center

Kết quả:

Python----
----Python
--Python--

Như vậy, chỉ cần vài dòng lệnh, mình đã có thể căn chỉnh chuỗi gọn gàng.

2.2. Căn lề với f-string và format()

Ngoài các phương thức trên, Python còn hỗ trợ căn lề thông qua f-string và format().

Ví dụ với f-string:

# Example: f-string alignment
name = "Alice"
score = 95

print(f"{name:<10} | {score:>5}")   # Left align name, right align score

Kết quả:

Alice      |    95

Tương tự với format():

# Example: format() alignment
name = "Bob"
score = 88

print("{:<10} | {:>5}".format(name, score))

Cả hai cách đều cho phép định dạng trực tiếp trong chuỗi, cực kỳ tiện lợi.

2.3. Ứng dụng trong trình bày dữ liệu dạng bảng

Giả sử mình muốn in bảng điểm sinh viên:

# Example: Print student scores table
students = [("Alice", 95), ("Bob", 88), ("Charlie", 72)]

print(f"{'Name':<10} | {'Score':>5}")
print("-" * 20)

for name, score in students:
    print(f"{name:<10} | {score:>5}")

Kết quả:

Name       | Score
--------------------
Alice      |    95
Bob        |    88
Charlie    |    72

Dễ thấy rằng việc căn lề đã giúp bảng trở nên rõ ràng và dễ đọc.

3. Định dạng chuỗi với f-string và format()

3.1. Giới thiệu về f-string

f-string (xuất hiện từ Python 3.6) cho phép nhúng trực tiếp biến và biểu thức vào chuỗi với cú pháp f"...".

# Example: f-string basic usage
name = "Alice"
age = 20

print(f"My name is {name} and I am {age} years old.")

Đây là cách viết ngắn gọn, dễ hiểu và rất phổ biến hiện nay.

3.2. Sử dụng format() method

Trước f-string, format() là lựa chọn chính để định dạng chuỗi.

# Example: Using format()
name = "Bob"
age = 25

print("My name is {} and I am {} years old.".format(name, age))

Ngoài ra, format() cho phép chỉ định vị trí hoặc tên biến:

print("My name is {0} and I am {1}.".format(name, age))
print("My name is {n} and I am {a}.".format(n=name, a=age))

3.3. Kết hợp định dạng số và căn lề

f-string và format không chỉ để chèn biến, mà còn hỗ trợ định dạng số.

# Example: Number formatting
pi = 3.14159265
percent = 0.8567

print(f"Pi rounded: {pi:.2f}")       # Keep 2 decimals
print(f"Percentage: {percent:.1%}")  # Convert to percent

Kết quả:

Pi rounded: 3.14
Percentage: 85.7%

Khi kết hợp với căn lề, mình có thể tạo ra bảng dữ liệu chính xác và đẹp mắt.

4. Kỹ thuật nâng cao trong định dạng chuỗi

4.1. Sử dụng format specifier

Specifier là các ký hiệu giúp chỉ định cách hiển thị dữ liệu:

  • :< → căn trái
  • :> → căn phải
  • :^ → căn giữa
  • :.2f → số thực với 2 chữ số thập phân
  • :, → thêm dấu phẩy phân tách hàng nghìn

Ví dụ:

# Example: Advanced format specifier
num = 1234567.891

print(f"{num:,.2f}")    # Add commas and 2 decimals
print(f"{num:^20.2f}")  # Center align in 20 spaces

Kết quả:

1,234,567.89
    1234567.89    

4.2. Kết hợp nhiều kiểu dữ liệu trong định dạng

Python cho phép định dạng số, chuỗi, ngày tháng cùng lúc.

# Example: Mixed data formatting
from datetime import date

product = "Laptop"
price = 1299.99
today = date.today()

print(f"{product:<10} | {price:>10,.2f} | {today:%Y-%m-%d}")

Kết quả:

Laptop     |   1,299.99 | 2025-09-27

4.3. Tạo bảng dữ liệu chuyên nghiệp

Ví dụ mình có danh sách doanh thu theo tháng:

# Example: Sales report table
sales = [("January", 12000.5), ("February", 15320.75), ("March", 9800)]

print(f"{'Month':<10} | {'Revenue':>12}")
print("-" * 25)

for month, revenue in sales:
    print(f"{month:<10} | {revenue:>12,.2f}")

Kết quả:

Month      |     Revenue
-------------------------
January    |     12,000.50
February   |     15,320.75
March      |      9,800.00

Bảng này hoàn toàn có thể sử dụng trong báo cáo thực tế.

5. Lưu ý

  • Khi nào dùng ljust, rjust, center: phù hợp cho các tác vụ đơn giản, không yêu cầu nhiều định dạng phức tạp.
  • Khi nào dùng f-string: nếu đang ở Python 3.6 trở lên, nên ưu tiên f-string vì cú pháp ngắn gọn, dễ hiểu.
  • Khi nào dùng format(): hữu ích khi viết code cần tương thích ngược hoặc khi có nhiều tham số phức tạp.
  • Kinh nghiệm: luôn chú ý tới độ dài cột khi in bảng, tránh để dữ liệu tràn ra ngoài.
  • Với dữ liệu lớn: nên tách logic định dạng thành hàm riêng để dễ bảo trì.

6. Kết luận

Qua bài viết này, mình và bạn đã cùng nhau đi qua những kỹ thuật quan trọng để căn lề và định dạng chuỗi trong Python. Với các tình huống đơn giản, chúng ta có thể dùng ljust(), rjust(), center() để sắp xếp chuỗi dễ dàng. Khi muốn trình bày chuyên nghiệp hơn, f-stringformat() mang lại sự linh hoạt, còn format specifier lại giúp xử lý chi tiết hơn với số, chuỗi và cả ngày tháng. Cuối cùng, việc biết cách xây dựng bảng dữ liệu gọn gàng, dễ đọc sẽ giúp code vừa đẹp mắt vừa dễ sử dụng.

Nắm vững những kỹ thuật này không chỉ giúp code Python của bạn ngắn gọn, rõ ràng hơn mà còn nâng cao tính chuyên nghiệp khi thao tác với dữ liệu.

7. Tài liệu tham khảo

  1. Python Software Foundation. Built-in Types — Text Sequence Type — str. Python 3.12 Documentation. https://docs.python.org/3/library/stdtypes.html#text-sequence-type-str
  2. Real Python. Python String Formatting Best Practices. https://realpython.com/python-f-strings/
  3. GeeksforGeeks. String Alignment in Python f-string. https://www.geeksforgeeks.org/string-alignment-in-python-f-string/

Leave a Reply

Your email address will not be published. Required fields are marked *