7 days of WordPress plugins, themes & templates - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. Code
  2. Python

Cách Tạo ra Thay đổi trên Nhiều Tập tin bằng Python

Scroll to top
Read Time: 4 mins

Vietnamese (Tiếng Việt) translation by Dai Phong (you can also view the original English article)

Giả sử rằng có người rành về chính tả của tiếng Anh ở Anh Quốc nhưng quyết định hoàn thành văn bằng của họ ở Mỹ. Anh ta được yêu cầu viết một bài luận văn về Python cho lớp. Anh ta thành thạo Python và không gặp vấn đề gì trong việc viết bài. Anh ta đề cập đến hình ảnh trong một phần của bài luận văn của anh ta và đã viết hơn một lần chữ grey (tiếng Anh Anh) thay vì gray (tiếng Anh Mỹ), ngoài ra neighbourhood (tiếng Anh Anh) thay vì neighborhood (tiếng Anh Mỹ). Nhưng bây giờ anh ta ở Mỹ và phải lượt qua tất cả những từ ngữ đánh vần theo cách của người Anh và thay thế chúng bằng các từ phát âm theo tiếng Anh của Mỹ.

Đây là một trong nhiều trường hợp mà trong đó chúng ta cần phải thay đổi một số cách viết hoặc nhầm lẫn ở nhiều vị trí.

Trong mẹo nhỏ này, tôi sẽ minh hoạ cho bạn một ví dụ trong đó chúng ta có năm tập tin văn bản đánh vần sai tên của tôi. Đó là, thay vì viết Abder, thì lại viết Adber. Ví dụ sẽ cho bạn thấy cách chúng ta có thể sử dụng Python để sửa lỗi chính tả tên của tôi trong tất cả các tập tin văn bản nằm bên trong một thư mục.

Hãy bắt đầu nào!

Chuẩn bị Dữ liệu

Trước khi chúng tiếp tục ví dụ, hãy chuẩn bị dữ liệu (các tập tin văn bản) mà chúng ta muốn làm việc. Hãy tiến hành tải về thư mục cùng với các tập tin của nó. Giải nén thư mục và bây giờ tất cả đã được thiết lập.

Như bạn có thể thấy, chúng ta có một thư mục có tên là Abder có chứa 5 tập tin khác nhau có tên là 1, 2, 3, 4, và 5.

Thực hiện

Bắt đầu đến với phần thú vị nào. Điều đầu tiên chúng ta cần làm là đọc nội dung của thư mục Abder. Để làm việc này, chúng ta có thể sử dụng phương thức listdir() như sau:

Nếu chúng ta muốn xem thử bên trong thư mục có cái gì, chúng ta có thể làm như sau:

Trong trường hợp này, chúng ta sẽ có:

Điều này cho thấy rằng chúng ta có năm tập tin rft bên trong thư mục.

Để đảm bảo chúng ta đang làm việc với thư mục hiện tại (thư mục cần thiết), chúng ta có thể sử dụng lệnh chdir như sau:

Điều tiếp theo chúng ta cần làm là lặp qua tất cả các tập tin bên trong thư mục Abder. Chúng ta có thể sử dụng một vòng lặp for như sau:

Vì chúng ta muốn tìm trong từng tập tin bên trong thư mục và tìm chữ Adber, nên công việc thường phải làm ở giai đoạn này là mở và đọc nội dung của mỗi tập tin:

Bây giờ đi kèm với một bước quan trọng, đặc biệt là khi nhắc đến việc khớp mẫu, trong trường hợp của chúng ta, đó là tìm kiếm chữ Adber. Bước này sử dụng các biểu thức chính quy (regex). Trong Python, để sử dụng các biểu thức chính quy, chúng ta sẽ sử dụng mô-đun re.

Chúng ta sẽ sử dụng hai hàm chính từ mô-đun này. Đầu tiên là hàm compile():

Biên dịch một mẫu biểu thức chính quy thành một đối tượng biểu thức chính quy, sử dụng cho việc khớp mẫu bằng phương thức match()search() của nó.

Và thứ hai là sub(), để thay thế chữ sai chính tả bằng chữ đúng. Do đó chúng ta sẽ làm như sau:

Cuối cùng, chúng ta cần ghi lại văn bản mới sau khi đã thay thế vào các tập tin của chúng ta như sau:

Tổng hợp

Trong phần này, hãy xem cách toàn bộ script Python tìm kiếm chữ Adber trong mỗi tập tin và thay thế bằng Abder như sau:

Như chúng ta có thể thấy, Python giúp dễ dàng thực hiện việc sửa đổi trên nhiều tập tin bằng vòng lặp for. Một phần quan trọng khác cần ghi nhớ ở đây là việc sử dụng các biểu thức chính quy để khớp mẫu.

Nếu bạn muốn tìm hiểu thêm về các vòng lặp trong Python, hãy tham khảo bài viết Ôn lại các Vòng lặp trong Python. Và để biết thêm thông tin về các biểu thức chính quy, hãy kiểm tra Biểu thức Chính quy trong Python.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.