Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

List comprehension và ord() trong Python để loại bỏ ký tự không phải chữ cái


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

  1. Duyệt qua từng ký tự trong chuỗi đầu vào.
  2. Chỉ giữ lại ký tự có mã ASCII nằm trong khoảng a-z (97-122) hoặc A-Z (65-90).
  3. 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.