Bài 11 – Làm Việc Với Chuỗi (String) Trong Python

Giới thiệu: Chuỗi (string) là một trong những kiểu dữ liệu cơ bản và quan trọng nhất trong Python, được sử dụng để lưu trữ và xử lý văn bản. Hiểu rõ các thao tác với chuỗi là kỹ năng thiết yếu cho mọi lập trình viên Python.

Mục tiêu bài học:
– Hiểu cách tạo và thao tác cơ bản với chuỗi
– Sử dụng thành thạo các phương thức xử lý chuỗi
– Áp dụng định dạng chuỗi (formatting) linh hoạt
– Nắm vững các kỹ thuật cắt (slicing) và nối chuỗi
– Xử lý được các bài toán thực tế liên quan đến chuỗi


1. Khái Niệm Và Cách Tạo Chuỗi

Định nghĩa: Chuỗi là một dãy các ký tự Unicode. Trong Python, chuỗi là bất biến (immutable) – không thể thay đổi sau khi tạo.

Cú pháp tạo chuỗi:

# Sử dụng dấu nháy đơn
chuoi_1 = 'Hello World'

# Sử dụng dấu nháy kép
chuoi_2 = "Python Programming"

# Chuỗi nhiều dòng
chuoi_3 = '''Đây là chuỗi
nhiều dòng'''

# Chuỗi raw (không xử lý ký tự đặc biệt)
chuoi_4 = r'C:\new\folder'

2. Các Thao Tác Cơ Bản Với Chuỗi

A. Truy cập ký tự trong chuỗi:

s = "Python"
print(s[0])    # 'P' - ký tự đầu
print(s[-1])   # 'n' - ký tự cuối

B. Cắt chuỗi (slicing):

s = "Hello World"
print(s[0:5])     # 'Hello' - từ 0 đến 4
print(s[6:])      # 'World' - từ 6 đến hết
print(s[:5])      # 'Hello' - từ đầu đến 4
print(s[::2])     # 'HloWrd' - mỗi bước 2 ký tự
print(s[::-1])    # 'dlroW olleH' - đảo ngược chuỗi

C. Nối chuỗi:

s1 = "Hello"
s2 = "World"
s3 = s1 + " " + s2   # 'Hello World'
s4 = s1 * 3          # 'HelloHelloHello'

3. Các Phương Thức Xử Lý Chuỗi Quan Trọng

A. Kiểm tra chuỗi:

s = "Python123"
print(s.isalnum())    # True - chỉ chứa chữ cái và số
print(s.isalpha())    # False - có chứa số
print(s.isdigit())    # False - không phải toàn số
print(s.islower())    # False - có chữ hoa
print(s.isupper())    # False - có chữ thường

B. Biến đổi chuỗi:

s = "  hello world  "
print(s.strip())        # 'hello world' - xóa khoảng trắng hai đầu
print(s.lstrip())       # 'hello world  ' - xóa bên trái
print(s.rstrip())       # '  hello world' - xóa bên phải

s2 = "Hello World"
print(s2.lower())       # 'hello world'
print(s2.upper())       # 'HELLO WORLD'
print(s2.capitalize())  # 'Hello world'
print(s2.title())       # 'Hello World'

C. Tìm kiếm và thay thế:

s = "Hello World"
print(s.find("World"))    # 6 - vị trí bắt đầu
print(s.find("Python"))   # -1 - không tìm thấy
print(s.replace("World", "Python"))  # 'Hello Python'
print(s.count("l"))       # 3 - số lần xuất hiện của 'l'

D. Phân tách và nối chuỗi:

s = "apple,banana,orange"
items = s.split(",")      # ['apple', 'banana', 'orange']
new_s = "-".join(items)   # 'apple-banana-orange'

lines = "Line1\nLine2\nLine3"
line_list = lines.splitlines()  # ['Line1', 'Line2', 'Line3']

5. Các Ký Tự Đặc Biệt Và Chuỗi Raw

Ký tự đặc biệt:

  • \n – Xuống dòng
  • \t – Tab
  • \\ – Dấu gạch chéo ngược
  • \' – Dấu nháy đơn
  • \" – Dấu nháy kép

Chuỗi raw (không xử lý ký tự đặc biệt):

path = r'C:\Users\Name\Documents'  # Không xử lý \U, \N, \D
print(path)  # C:\Users\Name\Documents

6. Ứng Dụng Thực Tế

Ví dụ 6.1: Kiểm tra mật khẩu mạnh

def kiem_tra_mat_khau(password):
    if len(password) < 8:
        return "Mật khẩu quá ngắn"
    if not any(char.isdigit() for char in password):
        return "Mật khẩu cần ít nhất một chữ số"
    if not any(char.isupper() for char in password):
        return "Mật khẩu cần ít nhất một chữ hoa"
    return "Mật khẩu mạnh"

print(kiem_tra_mat_khau("Abc12345"))

Ví dụ 6.2: Đếm từ trong văn bản

def dem_tu(van_ban):
    tu = van_ban.split()
    return len(tu)

van_ban = "Python là ngôn ngữ lập trình tuyệt vời"
print(f"Số từ: {dem_tu(van_ban)}")

Ví dụ 6.3: Ẩn email

def an_email(email):
    parts = email.split('@')
    username = parts[0]
    domain = parts[1]
    an_username = username[0] + '*' * (len(username) - 2) + username[-1]
    return f"{an_username}@{domain}"

print(an_email("example@gmail.com"))  # e*****e@gmail.com

Bài Tập Thực Hành

Bài 1: Viết chương trình/hàm nhập tên và tuổi, in ra thông báo: “Xin chào [tên], năm nay bạn [tuổi] tuổi”

Bài 2: Viết chương trình/hàm Nhập một câu, đếm xem có bao nhiêu từ trong câu (từ cách nhau bởi khoảng trắng)

Bài 3: Viết chương trình/hàm Nhập một chuỗi, in ra chuỗi đó viết hoa và viết thường

Bài 4: Viết chương trình/hàmNhập một chuỗi, kiểm tra xem chuỗi có bắt đầu bằng “Hello” không

Bài 5: Viết chương trình/hàmNhập một chuỗi, thay thế tất cả khoảng trắng bằng dấu gạch ngang “-“

Bài 6: Viết chương trình/hàm Nhập một chuỗi, cắt lấy 5 ký tự đầu và 5 ký tự cuối, nối chúng lại

Bài 7: Viết chương trình/hàm Nhập tên đầy đủ (họ và tên), tách và in riêng họ, tên đệm, tên

Bài 8: Viết chương trình/hàm Nhập một email, kiểm tra xem email có hợp lệ không (có chứa ký tự @)

Bài 9: Viết chương trình/hàm Nhập một chuỗi số (ví dụ: “12345”), tính tổng các chữ số trong chuỗi

Bài 10: Viết chương trình/hàm Nhập một câu, đảo ngược thứ tự các từ trong câu (không đảo từng từ)


Bài 11: Viết hàm đảo ngược một chuỗi

Bài 12: Viết hàm kiểm tra chuỗi có phải là palindrome không

Bài 13: Viết hàm đếm số ký tự hoa, thường, số trong chuỗi

Bài 14: Viết hàm mã hóa chuỗi bằng cách thay thế ký tự

Bài 15: Viết hàm tách họ và tên từ chuỗi họ tên đầy đủ

Bài 16: Viết hàm chuẩn hóa tên (viết hoa chữ cái đầu mỗi từ)

Bài 17: Viết hàm xóa tất cả khoảng trắng thừa trong chuỗi

Bài 18: Viết hàm tìm từ dài nhất trong chuỗi

Bài 19: Viết hàm kiểm tra xem một chuỗi có chứa toàn số không

Bài 20: Viết hàm tách địa chỉ email thành tên người dùng và tên miền

Comments are closed.