Khi dùng Python thao tác dữ liệu, ta có thể gặp danh sách mà các phần tử là mezcla chữ cái và số theo mẫu cố định. Bài viết này trình bày cách tách số từ chữ cái để dùng cho tính toán sau này.
Sử dụng split
Hàm split tách chuỗi nhờ một ký tự được xem như bộ phân tách. Trong chương trình dưới đây, các phần tử danh sách có dấu gạch ngang làm bộ phân tách giữa chữ và số. Ta sẽ dùng nó cùng vòng lặp for để bắt từng phần.
Ví dụ
listA = ['Mon-2', 'Wed-8', 'Thu-2', 'Fri-7'] # Danh sách cho trước print("Danh sách cho trước : " + str(listA)) # Trích xuất số num_list = [int(i.split('-')[1]) for i in listA] # in kết quả print("Danh sách chỉ với số : ",num_list)Kết quả
Chạy mã trên cho kết quả sau −
Danh sách cho trước : ['Mon-2', 'Wed-8', 'Thu-2', 'Fri-7'] Danh sách chỉ với số : [2, 8, 2, 7]
Sử dụng map và isnumeric
Trong cách này, ta đi qua từng phần tử và kiểm tra phần số hiện diện trong mỗi phần tử. Hàm map được dùng để áp dụng cùng hàm lặp lại trên mỗi phần tử.
Ví dụ
listA = ['Mon-2', 'Wed-8', 'Thu-2', 'Fri-7'] # Danh sách cho trước print("Danh sách cho trước : " + str(listA)) # Trích xuất số num_list = list(map(lambda sub:int(''.join( [i for i in sub if i.isnumeric()])), listA)) # in kết quả print("Danh sách chỉ với số : ",num_list)Kết quả
Chạy mã trên cho kết quả sau −
Danh sách cho trước : ['Mon-2', 'Wed-8', 'Thu-2', 'Fri-7'] Danh sách chỉ với số : [2, 8, 2, 7]