Bài viết hướng dẫn viết chương trình loại bỏ tất cả ký tự không phải chữ cái (a-z, A-Z) khỏi chuỗi, sử dụng list comprehension và hàm ord().
Thuật toán
- Duyệt qua từng ký tự trong chuỗi đầu vào.
- Chỉ giữ lại ký tự có mã ASCII nằm trong khoảng
a-z(97-122) hoặcA-Z(65-90). - Dùng
join()để gộp các ký tự hợp lệ thành chuỗi kết quả.
Ví dụ
def remchar(input_str):
# Lọc chữ cái thường (a-z) và chữ cái hoa (A-Z) qua mã ASCII
final = [ch for ch in input_str
if (ord(ch) in range(ord('a'), ord('z')+1))
or (ord(ch) in range(ord('A'), ord('Z')+1))]
return ''.join(final)
# Chương trình chính
if __name__ == "__main__":
input_str = "Tutorials@point786._/?"
print(remchar(input_str))
Kết quả
Tutorialspoint
Giải thích
- ord(ch) trả về mã ASCII/Unicode của ký tự
ch, cho phép so sánh số học nhanh chóng. - List comprehension tạo danh sách mới chỉ chứa các ký tự thỏa điều kiện.
- ''.join(...) nối các phần tử danh sách thành chuỗi không phân cách.
Cách viết gọn hơn (khuyên dùng)
def remchar_v2(input_str):
return ''.join(ch for ch in input_str if ch.isalpha())
# Hoặc dùng regex
import re
def remchar_regex(input_str):
return re.sub(r'[^A-Za-z]', '', input_str)
Kết luận
Đã trình bày cách dùng ord() kết hợp list comprehension để lọc chữ cái. Trong thực tế, nên ưu tiên str.isalpha() hoặc re.sub() vì code ngắn gọn, dễ đọc và hiệu năng tốt hơn.