ỨNG DỤNG REGEX ĐỂ TRÍCH XUẤT 2 SỐ ĐIỆN THOẠI TỪ TIN NHẮN VĂN BẢN

CÁC NỘI DUNG CHÍNH
I. YÊU CẦU ĐẦU VÀO
1. CHUẨN BỊ NỘI DUNG
2. YÊU CẦU KIẾN THỨC
3. ĐỀ BÀI VÀ YÊU CẦU ĐẶT RA
II. CÁC BƯỚC THỰC HIỆN
III. KẾT LUẬN
1. Trường hợp vận dụng 
2. Ưu điểm
3. Nhược điểm

I. YÊU CẦU ĐẦU VÀO

1. CHUẨN BỊ NỘI DUNG

Để bắt đầu bài học, các bạn cần có ít nhất 01 máy tính để bàn hoặc laptop, trong đó đã cài đặt:

a. Python

b. Visual Studio Code

c. Microsoft Excel từ 2007 trở lên để tối ưu việc lập trình bằng python.

d. Teamviewer hoặc Ultraviewer để được các giảng viên và trợ giảng của trang web Pyan.vn hỗ trợ 24/7 nếu các bạn bị vướng mắc trong quá trình code.

2. YÊU CẦU KIẾN THỨC

Đối với bài học này, các bạn cần nẵm vững các kiến thức sau:

a. Cách sử dụng hàm PRINT

b. Cách gán giá trị cho cell trong excel.

c. Nếu chưa nắm vững kiến thức, các bạn có thể trao đổi thêm với các giảng viên và trợ giảng của trang web Pyan.vn để được hỗ trợ.

3. ĐỀ BÀI VÀ YÊU CẦU ĐẶT RA

a. Đề bài:

Có 1 bảng dữ liệu với vùng excel thể hiện thông tin 3 tin nhắn văn bản, trong các tin nhắn có chứa số điện thoại (nội dung như trong hình ở dưới)

b. Yêu cầu đặt ra:

Sử dụng lập trình Python để thực hiện trích xuất 2 số điện thoại trong tin nhắn văn bản thứ hai.

Bảng dữ liệu ban đầu:

Bảng dữ liệu thu được sau khi code:      

II. CÁC BƯỚC THỰC HIỆN

Chúng ta để ý: ở chuỗi này có 2 số điện thoại, tuy nhiên 2 số điện thoại này có format khác nhau ở nhóm đầu tiên: 1 nhóm có 3 chữ số (084), 1 nhóm có 4 chữ số (0123)

Vậy chúng ta sẽ xử lý với regex như sau

Tạo một format tìm kiếm:

number2_regex1 = re.compile(r’\d{3,4}-\d{3}-\d{3}-\d{3}’)

ở đây \d{3,4} mang ý nghĩa là sẽ tìm kiếm số có 3 chữ số hoặc 4 chữ số

Tìm kiếm format này trong chuỗi msg2:

Như chúng ta biết ở bài toán 1, có thể sử dụng hàm search() để tìm kiếm, tuy nhiên hàm search này chỉ cho ra giá trị tìm kiếm khớp đầu tiên, nghĩa là chỉ 1 giá trị. Vậy đối với bài toán này cần nhiều hơn 1 giá trị chúng ta sẽ sử dụng hàm findallI() như sau:

match2_number1 = number2_regex1.findall(msg2)

Kết quả sau khi sử dụng hàm findall sẽ là 1 list

In kết quả

print(match2_number1)

Kết quả cho ra: [‘084-123-456-789’, ‘0123-123-456-789’]

Một cách viết khác để tìm chuỗi số trên có thể áp dụng kể cả khi chúng ta không biết có bao nhiêu chữ số trong một nhóm số điện thoại trên

number2_regex2 = re.compile(r’\d+-\d+-\d+-\d+’)

Với \d+ sẽ bắt tất cả các số (nhiều chữ số)

Tìm kiếm chuỗi:

match2_number2 = number2_regex2.findall(msg2)

In kết quả:

print(match2_number2)

Kết quả cho ra: [‘084-123-456-789’, ‘0123-123-456-789’]

III. KẾT LUẬN

1. Trường hợp vận dụng

Được sử dụng để tạo ra những phương thức tìm kiếm cho 1 String theo quy luật nhất định giúp chúng ta tìm kiếm trong văn bản một cách đơn giản và hiệu quả hơn.

2. Ưu điểm

Việc cho việc truy xuất dữ liệu được đơn giản hơn rất nhiều so với việc dùng vòng lặp for.

3. Nhược điểm

Yêu cầu sự tỉ mỉ trong việc xây dựng công thức, dễ bị nhầm lẫn.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *