Python là một ngôn ngữ lập trình tuyệt vời để tự động hóa công cụ. Nó chứa nhiều thư viện cho phép bạn tạo mã tái sử dụng tuyệt vời. Một thư viện như vậy là python-docx
Thư viện này hữu ích cho nhiều tác vụ xử lý tài liệu, chẳng hạn như
1. Thêm tiêu đề
2. Đọc đoạn văn
3. Viết đoạn văn
4. Thêm hình ảnh
5. Tạo và lưu tệp tài liệu
6. Tìm và thay thế văn bản
7. Thao tác với tệp tài liệu hiện có
8. Thêm ngắt trang và hơn thế nữa
Tuy nhiên, trong bài viết này, chúng ta sẽ thảo luận về một chức năng cụ thể của thư viện Docx trong Python. Chúng tôi sẽ tạo một tập lệnh python theo cách nó sẽ tạo ra nhiều khung dữ liệu như số lượng bảng để sau này các bảng này có thể được lưu trữ dưới dạng các tệp riêng biệt [có thể là CSV] và thuận tiện cho việc sử dụng. Mặc dù thư viện Python-Docx có thể tạo và cập nhật các tệp Microsoft Word, nhưng chúng tôi sẽ sử dụng nó để –
1. In từng đoạn trong tài liệu
2. Đọc tất cả các bảng trong tài liệu từ và chuyển đổi chúng thành khung dữ liệu
3. In số từ của từng đoạn và tổng số từ của tài liệu
Tài liệu cho thư viện còn hạn chế nhưng có thể đọc thêm thông qua liên kết này. https. // trăn-docx. đọcthedocs. io/vi/mới nhất/
Hiểu khung dữ liệu
Trước khi chúng tôi bắt đầu với mã thực tế, chúng tôi sẽ thảo luận ngắn gọn về các khung dữ liệu. Khung dữ liệu là cấu trúc dữ liệu dạng bảng hai chiều. Nó bao gồm các hàng và cột. Nó bao gồm các yếu tố không đồng nhất. Ví dụ: nếu chúng tôi xem xét khung dữ liệu "nhân viên". Các cột có thể là “tên”, “tuổi”, “giới tính”, “lương”, “ngày gia nhập”. Cấu trúc kết quả của khung dữ liệu trên như sau -
Từ hình trên ta thấy các thành phần không đồng nhất. Chẳng hạn như tên là dữ liệu kiểu chuỗi, tuổi là số, giới tính là ký tự, lương là gấp đôi và ngày tham gia là trường kiểu ngày
Chúng ta có thể tạo khung dữ liệu bằng cách sử dụng danh sách, từ điển hoặc chỉ cần nhập tệp. Phần lớn phân tích dữ liệu, thao tác dữ liệu, trích xuất, v.v. , có thể được thực hiện sau khi lấy dữ liệu dưới dạng khung dữ liệu
Chúng tôi sẽ sử dụng tài liệu sau để mã hóa, như hình dưới đây. Tài liệu này chứa hai bảng. Do đó, mã của chúng tôi cũng sẽ tạo hai khung dữ liệu
Hiểu hàm trong Python
Hàm là tập hợp các lệnh thực hiện một nhiệm vụ nào đó. Các chức năng tránh lặp lại và là một cách tuyệt vời để tạo các thành phần có thể tái sử dụng. Nó chia chương trình thành các mô-đun. Nó làm cho mã dễ quản lý và dễ hiểu hơn. Các hàm được viết bằng Python sử dụng từ khóa “def”. Theo sau nó là tên hàm duy nhất và truyền đối số. Một dấu hai chấm [. ] đánh dấu phần cuối của tiêu đề chức năng. Một hàm có thể có hoặc không có câu lệnh return. Một câu lệnh return đánh dấu sự thoát khỏi chức năng. Và sau đó điều khiển quay trở lại nơi gọi. Nó phụ thuộc vào bản chất của nhiệm vụ mà chức năng được viết. Chúng ta có thể gọi hàm trong một hàm hoặc chương trình khác bằng cách sử dụng tên hàm. Chúng ta có thể truyền tham số nếu hàm được xác định để chấp nhận tham số
Trong bài viết của chúng tôi, chúng tôi đã định nghĩa một hàm có tên là “create_df_from_table”. Nó chấp nhận hai đối số hoặc tham số. Chúng là “c” và “tab”. Tham số đầu tiên là một số nguyên có giá trị bắt đầu bằng 0. Tham số thứ hai là đầu ra bảng từ “tài liệu. những cái bàn"
Thực hiện
1. Nhập thư viện
Chúng tôi sẽ sử dụng hai thư viện – Docx và pandas. Python-Docx là một thư viện python có thể xử lý các tệp từ Microsoft. Pandas là một thư viện python được sử dụng để phân tích dữ liệu
import docx import pandas as pd
2. Đọc tài liệu từ
Hãy để chúng tôi tạo một tệp tài liệu word mẫu với tên testdoc. docx. Tệp tài liệu này chứa một tiêu đề. Có hai bảng và hai đoạn văn. Bảng đầu tiên có bốn hàng và ba cột, không bao gồm hàng tiêu đề. Bảng thứ hai có hai hàng và hai cột, không bao gồm hàng tiêu đề. Đối tượng “Document” dùng để đọc file Docx
document = docx.Document['testdoc.docx']
3. In đoạn văn
Có hai đoạn văn trong tài liệu. Tiêu đề cũng được coi là một đoạn. Hai bảng có trong tài liệu không được coi là một đoạn trong mô-đun Docx. Hai đoạn văn cùng với tiêu đề tài liệu được hiển thị khi các lệnh bên dưới được chạy
para_text_list = [] for each_par in the document.paragraphs: print[each_par.text] para_text_list.append[each_par.text]
4. Tạo khung dữ liệu từ bảng
Chúng tôi sẽ tạo một chức năng có thể sử dụng lại để đọc các bảng. Hàm của chúng ta phải được tạo theo cách nó tìm thấy tất cả các bảng trong tài liệu và tạo các khung dữ liệu riêng cho tất cả. Trong định nghĩa này, chúng tôi giả sử rằng mỗi bảng có một tiêu đề. Hàng đầu tiên sẽ được coi là tên cột và phần còn lại là giá trị hàng. Chúng tôi sẽ thêm tiền tố vào tên khung dữ liệu của mình bằng “result_df_” và số lượng bắt đầu bằng 0. Ví dụ: nếu có ba bảng trong tài liệu từ thì tên khung dữ liệu được tạo là result_df_0, result_df_1 và result_df_2
def create_df_from_table[c, tab]: list_name = str[c]+"_result_list" list_name = [] for i,each_row in enumerate[each_tab.rows]: text = [each_cell.text for each_cell in each_row.cells] if i == 0: keys = tuple[text] else: each_dict_val = dict[zip[keys, text]] list_name.append[each_dict_val] result_df = pd.DataFrame[list_name] return result_df for c, each_tab in enumerate[document.tables]: globals[][f'result_df_{c}'] = create_df_from_table[c, each_tab]
Hai khung dữ liệu được tạo như hình bên dưới
5. Đọc đếm từ của từng đoạn và đếm từ
Chúng tôi sẽ tính toán độ dài của từng phần của tài liệu từ. Chức năng “len” và “sum” được sử dụng để tìm số lượng từ
words_each_list = [len[each_sent.split[]] for each_sent in para_text_list] print[words_each_list] total_no_of_words = sum[words_each_list] print[total_no_of_words]
Ưu điểm của việc tạo mã có thể sử dụng lại
Trong bài viết này, chúng tôi đã cố gắng tạo một đoạn mã có thể hoạt động cho bất kỳ bảng nào trong tài liệu từ. Đây là những lợi ích tiềm năng của việc tạo mã có thể sử dụng lại –
1. Tiết kiệm thời gian phát triển – Viết một đoạn mã có thể được tích hợp và sử dụng trong ứng dụng khác giúp tiết kiệm đủ thời gian cho sự phát triển quan trọng hơn
2. Cung cấp cấu trúc – Mặc dù tất cả các mã tự động hóa có thể được đặt ở một nơi duy nhất, nhưng nó giúp các nhà phát triển có giao diện đẹp và dễ hiểu
3. Giảm rủi ro – Khi mã được phát triển, nó sẽ trải qua quá trình kiểm tra lỗ hổng trước khi triển khai. Những kiểm tra này có thể dễ dàng tránh được
4. Dễ dàng bảo trì – Dễ dàng bảo trì sản phẩm. Sửa chữa tại một chỗ có thể dẫn đến sửa chữa tổng thể cho tất cả các thành phần được liên kết với nhau
5. Một cách làm việc hiệu quả – Các chức năng có thể được giữ ở một vị trí trung tâm và có thể được sử dụng khi cần thiết. Điều này sẽ làm cho chương trình trở nên mô-đun và gọn gàng hơn
Trong bài báo này,
1. Chúng tôi đã khám phá thư viện Docx –
a] Thư viện Docx có thể được cài đặt trong python bằng cách sử dụng pip install python-docx
b] Các thao tác như lưu tệp Docx, thêm đoạn văn, đánh dấu cụm từ trong tài liệu, thêm hình ảnh vào tài liệu, thêm tiêu đề, thay đổi thuộc tính phông chữ, v.v. , có thể được thực hiện bằng mô-đun Docx
c] Chúng tôi đã tạo một chức năng có thể sử dụng lại để chuyển đổi tất cả các bảng thành khung dữ liệu
2. Chúng tôi đã tạo ra một sự hiểu biết ngắn gọn về khung dữ liệu
3. Đã thảo luận về tầm quan trọng của việc viết mã có thể sử dụng lại
Đọc thêm bài viết trên blog của chúng tôi
nguồn hình ảnh. Tác giả
Phương tiện hiển thị trong bài viết này không thuộc sở hữu của Analytics Vidhya và được sử dụng theo quyết định của Tác giả