Các phương thức của String
1. Giới thiệu
Phần tiêu đề “1. Giới thiệu”String (chuỗi ký tự) là một trong những kiểu dữ liệu quan trọng nhất trong Python. Python cung cấp rất nhiều phương thức hữu ích để làm việc với string.
Lưu ý: String trong Python là immutable (không thể thay đổi). Tất cả các phương thức đều trả về string mới, không thay đổi string gốc.
2. Phương thức thay đổi chữ hoa/thường
Phần tiêu đề “2. Phương thức thay đổi chữ hoa/thường”2.1 - upper() - Chuyển thành CHỮ HOA
Phần tiêu đề “2.1 - upper() - Chuyển thành CHỮ HOA”text = "Hello World"result = text.upper()print(result) # "HELLO WORLD"print(text) # "Hello World" - không thay đổi2.2 - lower() - Chuyển thành chữ thường
Phần tiêu đề “2.2 - lower() - Chuyển thành chữ thường”text = "Hello World"result = text.lower()print(result) # "hello world"2.3 - capitalize() - Viết hoa chữ cái đầu
Phần tiêu đề “2.3 - capitalize() - Viết hoa chữ cái đầu”text = "hello world"result = text.capitalize()print(result) # "Hello world"2.4 - title() - Viết hoa đầu mỗi từ
Phần tiêu đề “2.4 - title() - Viết hoa đầu mỗi từ”text = "hello world python"result = text.title()print(result) # "Hello World Python"2.5 - swapcase() - Đổi hoa <-> thường
Phần tiêu đề “2.5 - swapcase() - Đổi hoa <-> thường”text = "Hello World"result = text.swapcase()print(result) # "hELLO wORLD"3. Phương thức kiểm tra (trả về True/False)
Phần tiêu đề “3. Phương thức kiểm tra (trả về True/False)”3.1 - startswith() - Bắt đầu bằng…
Phần tiêu đề “3.1 - startswith() - Bắt đầu bằng…”text = "Python Programming"print(text.startswith("Python")) # Trueprint(text.startswith("Java")) # False3.2 - endswith() - Kết thúc bằng…
Phần tiêu đề “3.2 - endswith() - Kết thúc bằng…”filename = "document.pdf"print(filename.endswith(".pdf")) # Trueprint(filename.endswith(".doc")) # False3.3 - isdigit() - Tất cả là chữ số
Phần tiêu đề “3.3 - isdigit() - Tất cả là chữ số”print("12345".isdigit()) # Trueprint("123a5".isdigit()) # Falseprint("".isdigit()) # False3.4 - isalpha() - Tất cả là chữ cái
Phần tiêu đề “3.4 - isalpha() - Tất cả là chữ cái”print("Hello".isalpha()) # Trueprint("Hello123".isalpha()) # Falseprint("Hello ".isalpha()) # False (có khoảng trắng)3.5 - isalnum() - Chữ cái hoặc chữ số
Phần tiêu đề “3.5 - isalnum() - Chữ cái hoặc chữ số”print("Hello123".isalnum()) # Trueprint("Hello 123".isalnum()) # False (có khoảng trắng)3.6 - isspace() - Tất cả là khoảng trắng
Phần tiêu đề “3.6 - isspace() - Tất cả là khoảng trắng”print(" ".isspace()) # Trueprint(" a ".isspace()) # False3.7 - isupper() và islower()
Phần tiêu đề “3.7 - isupper() và islower()”print("HELLO".isupper()) # Trueprint("hello".islower()) # Trueprint("Hello".isupper()) # False4. Phương thức tìm kiếm
Phần tiêu đề “4. Phương thức tìm kiếm”4.1 - find() - Tìm vị trí đầu tiên
Phần tiêu đề “4.1 - find() - Tìm vị trí đầu tiên”text = "Hello World"position = text.find("World")print(position) # 6
# Không tìm thấy -> trả về -1position = text.find("Python")print(position) # -14.2 - rfind() - Tìm vị trí cuối cùng
Phần tiêu đề “4.2 - rfind() - Tìm vị trí cuối cùng”text = "hello hello hello"print(text.find("hello")) # 0 (đầu tiên)print(text.rfind("hello")) # 12 (cuối cùng)4.3 - index() - Giống find() nhưng báo lỗi
Phần tiêu đề “4.3 - index() - Giống find() nhưng báo lỗi”text = "Hello World"position = text.index("World")print(position) # 6
# Không tìm thấy -> LỖI!# position = text.index("Python") # ValueError4.4 - count() - Đếm số lần xuất hiện
Phần tiêu đề “4.4 - count() - Đếm số lần xuất hiện”text = "hello hello world"count = text.count("hello")print(count) # 25. Phương thức thay thế
Phần tiêu đề “5. Phương thức thay thế”5.1 - replace() - Thay thế chuỗi
Phần tiêu đề “5.1 - replace() - Thay thế chuỗi”text = "Hello World"result = text.replace("World", "Python")print(result) # "Hello Python"
# Thay thế nhiều lầntext = "apple apple apple"result = text.replace("apple", "orange")print(result) # "orange orange orange"
# Giới hạn số lần thay thếresult = text.replace("apple", "orange", 2)print(result) # "orange orange apple"6. Phương thức tách và nối
Phần tiêu đề “6. Phương thức tách và nối”6.1 - split() - Tách chuỗi thành list
Phần tiêu đề “6.1 - split() - Tách chuỗi thành list”# Tách theo khoảng trắng (mặc định)text = "Hello World Python"words = text.split()print(words) # ["Hello", "World", "Python"]
# Tách theo ký tự cụ thểtext = "apple,banana,orange"fruits = text.split(",")print(fruits) # ["apple", "banana", "orange"]
# Giới hạn số lần táchtext = "a-b-c-d-e"parts = text.split("-", 2)print(parts) # ["a", "b", "c-d-e"]6.2 - join() - Nối list thành chuỗi
Phần tiêu đề “6.2 - join() - Nối list thành chuỗi”words = ["Hello", "World", "Python"]result = " ".join(words)print(result) # "Hello World Python"
# Nối bằng dấu phẩyfruits = ["apple", "banana", "orange"]result = ", ".join(fruits)print(result) # "apple, banana, orange"
# Nối không có gì giữa các từletters = ["H", "e", "l", "l", "o"]result = "".join(letters)print(result) # "Hello"6.3 - splitlines() - Tách theo dòng
Phần tiêu đề “6.3 - splitlines() - Tách theo dòng”text = "Line 1\nLine 2\nLine 3"lines = text.splitlines()print(lines) # ["Line 1", "Line 2", "Line 3"]7. Phương thức loại bỏ khoảng trắng
Phần tiêu đề “7. Phương thức loại bỏ khoảng trắng”7.1 - strip() - Xoá khoảng trắng hai đầu
Phần tiêu đề “7.1 - strip() - Xoá khoảng trắng hai đầu”text = " Hello World "result = text.strip()print(result) # "Hello World"print(f"'{result}'") # 'Hello World'7.2 - lstrip() - Xoá bên trái
Phần tiêu đề “7.2 - lstrip() - Xoá bên trái”text = " Hello World "result = text.lstrip()print(f"'{result}'") # 'Hello World '7.3 - rstrip() - Xoá bên phải
Phần tiêu đề “7.3 - rstrip() - Xoá bên phải”text = " Hello World "result = text.rstrip()print(f"'{result}'") # ' Hello World'7.4 - Xoá ký tự cụ thể
Phần tiêu đề “7.4 - Xoá ký tự cụ thể”text = "***Hello World***"result = text.strip("*")print(result) # "Hello World"
url = "https://example.com/"clean_url = url.rstrip("/")print(clean_url) # "https://example.com"8. Phương thức căn chỉnh
Phần tiêu đề “8. Phương thức căn chỉnh”8.1 - center() - Căn giữa
Phần tiêu đề “8.1 - center() - Căn giữa”text = "Hello"result = text.center(20)print(f"'{result}'") # ' Hello '
# Với ký tự tùy chỉnhresult = text.center(20, "*")print(result) # "*******Hello********"8.2 - ljust() - Căn trái
Phần tiêu đề “8.2 - ljust() - Căn trái”text = "Hello"result = text.ljust(20, "-")print(result) # "Hello---------------"8.3 - rjust() - Căn phải
Phần tiêu đề “8.3 - rjust() - Căn phải”text = "Hello"result = text.rjust(20, "-")print(result) # "---------------Hello"8.4 - zfill() - Thêm số 0 vào đầu
Phần tiêu đề “8.4 - zfill() - Thêm số 0 vào đầu”number = "42"result = number.zfill(5)print(result) # "00042"
# Hữu ích cho format sốnumbers = ["1", "10", "100"]for num in numbers: print(num.zfill(5))# 00001# 00010# 001009. Phương thức encode/decode
Phần tiêu đề “9. Phương thức encode/decode”9.1 - encode() - Chuyển string thành bytes
Phần tiêu đề “9.1 - encode() - Chuyển string thành bytes”text = "Hello"encoded = text.encode("utf-8")print(encoded) # b'Hello'print(type(encoded)) # <class 'bytes'>9.2 - decode() - Chuyển bytes thành string
Phần tiêu đề “9.2 - decode() - Chuyển bytes thành string”encoded = b'Hello'text = encoded.decode("utf-8")print(text) # "Hello"print(type(text)) # <class 'str'>10. Các phương thức khác
Phần tiêu đề “10. Các phương thức khác”10.1 - len() - Độ dài chuỗi
Phần tiêu đề “10.1 - len() - Độ dài chuỗi”text = "Hello World"length = len(text)print(length) # 1110.2 - Truy cập ký tự theo index
Phần tiêu đề “10.2 - Truy cập ký tự theo index”text = "Hello"print(text[0]) # "H"print(text[-1]) # "o"print(text[1:4]) # "ell"10.3 - in - Kiểm tra chuỗi con
Phần tiêu đề “10.3 - in - Kiểm tra chuỗi con”text = "Hello World"print("World" in text) # Trueprint("Python" in text) # False10.4 - ord() và chr() - Chuyển đổi ký tự <-> mã ASCII
Phần tiêu đề “10.4 - ord() và chr() - Chuyển đổi ký tự <-> mã ASCII”# Ký tự -> Mã ASCIIprint(ord("A")) # 65print(ord("a")) # 97
# Mã ASCII -> Ký tựprint(chr(65)) # "A"print(chr(97)) # "a"11. Bảng tổng hợp các phương thức
Phần tiêu đề “11. Bảng tổng hợp các phương thức”Thay đổi chữ hoa/thường
Phần tiêu đề “Thay đổi chữ hoa/thường”| Phương thức | Chức năng | Ví dụ |
|---|---|---|
upper() |
Chữ HOA | "hello".upper() → "HELLO" |
lower() |
chữ thường | "HELLO".lower() → "hello" |
capitalize() |
Viết hoa đầu | "hello".capitalize() → "Hello" |
title() |
Viết hoa mỗi từ | "hello world".title() → "Hello World" |
swapcase() |
Đổi hoa/thường | "Hello".swapcase() → "hELLO" |
Kiểm tra
Phần tiêu đề “Kiểm tra”| Phương thức | Chức năng |
|---|---|
startswith(x) |
Bắt đầu bằng x |
endswith(x) |
Kết thúc bằng x |
isdigit() |
Tất cả là chữ số |
isalpha() |
Tất cả là chữ cái |
isalnum() |
Chữ cái hoặc số |
isspace() |
Tất cả là khoảng trắng |
isupper() |
Tất cả là chữ HOA |
islower() |
Tất cả là chữ thường |
Tìm kiếm và thay thế
Phần tiêu đề “Tìm kiếm và thay thế”| Phương thức | Chức năng |
|---|---|
find(x) |
Tìm vị trí đầu tiên của x |
rfind(x) |
Tìm vị trí cuối cùng của x |
index(x) |
Như find() nhưng báo lỗi |
count(x) |
Đếm số lần xuất hiện |
replace(old, new) |
Thay thế old bằng new |
Tách và nối
Phần tiêu đề “Tách và nối”| Phương thức | Chức năng |
|---|---|
split() |
Tách thành list |
join() |
Nối list thành string |
splitlines() |
Tách theo dòng |
Loại bỏ khoảng trắng
Phần tiêu đề “Loại bỏ khoảng trắng”| Phương thức | Chức năng |
|---|---|
strip() |
Xoá hai đầu |
lstrip() |
Xoá bên trái |
rstrip() |
Xoá bên phải |
Căn chỉnh
Phần tiêu đề “Căn chỉnh”| Phương thức | Chức năng |
|---|---|
center(n) |
Căn giữa |
ljust(n) |
Căn trái |
rjust(n) |
Căn phải |
zfill(n) |
Thêm số 0 đầu |
12. Ví dụ thực tế
Phần tiêu đề “12. Ví dụ thực tế”Ví dụ 1: Validate email
Phần tiêu đề “Ví dụ 1: Validate email”def is_valid_email(email): email = email.strip().lower() if "@" not in email: return False if not email.endswith((".com", ".vn", ".net")): return False return True
print(is_valid_email("invalid-email")) # FalseVí dụ 2: Format tên
Phần tiêu đề “Ví dụ 2: Format tên”def format_name(name): # Loại bỏ khoảng trắng thừa và viết hoa đúng name = name.strip().title() # Loại bỏ khoảng trắng giữa các từ words = name.split() return " ".join(words)
print(format_name(" tuệ nghi ")) # "Tuệ Nghi"Ví dụ 3: Parse CSV
Phần tiêu đề “Ví dụ 3: Parse CSV”csv_line = "Alice,25,Hanoi"data = csv_line.split(",")name, age, city = dataprint(f"Name: {name}, Age: {age}, City: {city}")Ví dụ 4: Validate số điện thoại
Phần tiêu đề “Ví dụ 4: Validate số điện thoại”def is_valid_phone(phone): # Loại bỏ khoảng trắng và dấu - phone = phone.replace(" ", "").replace("-", "") # Kiểm tra tất cả là số và độ dài 10 return phone.isdigit() and len(phone) == 10
print(is_valid_phone("0901-234-567")) # Trueprint(is_valid_phone("090-123-45")) # FalseVí dụ 5: Tạo slug cho URL
Phần tiêu đề “Ví dụ 5: Tạo slug cho URL”def create_slug(title): # Chuyển thành chữ thường slug = title.lower() # Thay khoảng trắng bằng dấu - slug = slug.replace(" ", "-") # Loại bỏ ký tự đặc biệt (đơn giản) allowed = "abcdefghijklmnopqrstuvwxyz0123456789-" slug = "".join(c for c in slug if c in allowed) return slug
print(create_slug("Hello World Python"))# "hello-world-python"Bài giảng trên YouTube
Phần tiêu đề “Bài giảng trên YouTube”Cập nhật sau
📝 Bài tập thực hành
Phần tiêu đề “📝 Bài tập thực hành”Sau khi học xong bài này, hãy thực hành với các bài tập sau: