Đọc bảng trong word python

Bài đăng này sẽ nói về cách đọc Tài liệu Word bằng Python. Chúng tôi sẽ đề cập đến ba gói khác nhau – docx2txt, docx và yêu thích cá nhân của tôi. docx2python

Gói docx2txt

Trước tiên hãy nói về docx2text. Đây là gói Python cho phép bạn cạo văn bản và hình ảnh từ Tài liệu Word. Ví dụ dưới đây đọc trong Tài liệu Word có chứa Zen of Python. Như bạn có thể thấy, khi chúng tôi đã nhập docx2txt, tất cả những gì chúng tôi cần là một dòng mã để đọc văn bản từ Tài liệu Word. Chúng ta có thể đọc trong tài liệu bằng một phương thức trong gói có tên process, lấy tên của tệp làm đầu vào. Văn bản thông thường, các mục được liệt kê, văn bản siêu liên kết và văn bản bảng đều sẽ được trả về trong một chuỗi

import docx2txt

# read in word file
result = docx2txt.process["zen_of_python.docx"]



Nếu tập tin có hình ảnh thì sao? . Khi chúng ta chạy phương thức process, chúng ta có thể truyền một tham số bổ sung chỉ định tên của thư mục đầu ra. Đang chạy docx2txt. quá trình sẽ trích xuất bất kỳ hình ảnh nào trong Tài liệu Word và lưu chúng vào thư mục được chỉ định này. Văn bản từ tệp cũng sẽ được trích xuất và lưu trữ trong biến kết quả

import docx2txt

result = docx2txt.process["zen_of_python_with_image.docx", "C:/path/to/store/files"]


Hình ảnh minh họa



docx2txt cũng sẽ loại bỏ bất kỳ văn bản nào khỏi bảng. Một lần nữa, điều này sẽ được trả về thành một chuỗi với bất kỳ văn bản nào khác được tìm thấy trong tài liệu, điều đó có nghĩa là văn bản này có thể khó phân tích cú pháp hơn. Ở phần sau của bài đăng này, chúng ta sẽ nói về docx2python, cho phép bạn quét các bảng theo định dạng có cấu trúc hơn

gói docx

Mã nguồn đằng sau docx2txt được lấy từ mã trong gói docx, mã này cũng có thể được sử dụng để quét Tài liệu Word. docx là một thư viện mạnh mẽ để thao tác và tạo Tài liệu Word, nhưng cũng có thể [với một số hạn chế] đọc văn bản từ tệp Word

Trong ví dụ bên dưới, chúng tôi mở một kết nối đến tệp từ mẫu của mình bằng docx. phương pháp tài liệu. Ở đây chúng tôi chỉ nhập tên của tệp mà chúng tôi muốn kết nối với. Sau đó, chúng tôi có thể cạo văn bản từ từng đoạn trong tệp bằng cách sử dụng khả năng hiểu danh sách kết hợp với tài liệu. đoạn văn. Điều này sẽ bao gồm việc cạo các dòng riêng biệt được xác định trong Tài liệu Word cho các mục được liệt kê. Không giống như docx2txt, docx, không thể cạo hình ảnh từ Tài liệu Word. Ngoài ra, docx sẽ không loại bỏ các siêu liên kết và văn bản trong các bảng được xác định trong Tài liệu Word

import docx

# open connection to Word Document
doc = docx.Document["zen_of_python.docx"]

# read in each paragraph in file
result = [p.text for p in doc.paragraphs]

Gói docx2python

docx2python là một gói khác mà chúng ta có thể sử dụng để cạo Tài liệu Word. Nó có một số tính năng bổ sung ngoài docx2txt và docx. Ví dụ: nó có thể trả về văn bản được lấy từ một tài liệu ở định dạng có cấu trúc hơn. Hãy kiểm tra Tài liệu Word của chúng tôi với docx2python. Chúng tôi sẽ thêm một bảng đơn giản vào tài liệu để chúng tôi cũng có thể trích xuất bảng đó [xem bên dưới]

docx2python chứa một phương thức có cùng tên. Nếu chúng ta gọi phương thức này với tên của tài liệu làm đầu vào, chúng ta sẽ lấy lại một đối tượng có một số thuộc tính

from docx2python import docx2python

# extract docx content
doc_result = docx2python['zen_of_python.docx']

Mỗi thuộc tính cung cấp văn bản hoặc thông tin từ tệp. Ví dụ: hãy xem xét rằng tệp của chúng tôi có ba thành phần chính – văn bản chứa Zen của Python, một bảng và một hình ảnh. Nếu chúng ta gọi doc_result. nội dung, mỗi thành phần này sẽ được trả về dưới dạng các mục riêng biệt trong danh sách

# get separate components of the document
doc_result.body

# get the text from Zen of Python
doc_result[0]

# get the image
doc_result[1] 

# get the table text
doc_result[2]

Cạo một bảng tài liệu từ với docx2python

Kết quả văn bản của bảng được trả về dưới dạng danh sách lồng nhau, như bạn có thể thấy bên dưới. Mỗi hàng [bao gồm cả tiêu đề] được trả về dưới dạng danh sách phụ riêng biệt. Phần tử thứ 0 của danh sách đề cập đến tiêu đề – hoặc hàng thứ 0 của bảng. Phần tử tiếp theo đề cập đến hàng tiếp theo trong bảng, v.v. Đổi lại, mỗi giá trị trong một hàng được trả về dưới dạng một danh sách con riêng lẻ trong danh sách tương ứng của hàng đó

Chúng tôi có thể chuyển đổi kết quả này thành định dạng bảng bằng pandas. Khung dữ liệu vẫn còn hơi lộn xộn – mỗi ô trong khung dữ liệu là một danh sách chứa một giá trị. Giá trị này cũng có khá nhiều “\t”[đại diện cho không gian tab]

pd.DataFrame[doc_result.body[1][1:]]

Ở đây, chúng tôi sử dụng phương thức applymap để áp dụng hàm lambda bên dưới cho mọi ô trong khung dữ liệu. Hàm này nhận giá trị riêng lẻ trong danh sách ở mỗi ô và loại bỏ tất cả các phiên bản của “\t”

import pandas as pd


pd.DataFrame[doc_result.body[1][1:]].\
                            applymap[lambda val: val[0].strip["\t"]]


Tiếp theo, hãy thay đổi tiêu đề cột thành những gì chúng ta thấy trong tệp Word [tệp này cũng được trả về cho chúng tôi trong doc_result. thân hình]

df.columns = [val[0].strip["\t"] for val in doc_result.body[1][0]]


Trích xuất hình ảnh

Chúng ta có thể trích xuất hình ảnh của tệp Word bằng thuộc tính images của đối tượng doc_result. doc_result. hình ảnh bao gồm một từ điển trong đó các khóa là tên của tệp hình ảnh [không được ghi tự động vào đĩa] và các giá trị tương ứng là các tệp hình ảnh ở định dạng nhị phân

________số 8

Chúng ta có thể ghi hình ảnh định dạng nhị phân ra một tệp vật lý như thế này

for key,val in doc_result.images.items[]:
    f = open[key, "wb"]
    f.write[val]
    f.close[]

Ở trên, chúng tôi chỉ lặp qua các khóa [tên tệp hình ảnh] và giá trị [hình ảnh nhị phân] trong từ điển và viết từng tệp ra tệp. Trong trường hợp này, chúng tôi chỉ có một hình ảnh trong tài liệu, vì vậy chúng tôi chỉ lấy một hình ảnh được viết ra

thuộc tính khác

Kết quả docx2python có một số thuộc tính khác mà chúng tôi có thể sử dụng để trích xuất văn bản hoặc thông tin từ tệp. Ví dụ: nếu chúng tôi muốn lấy tất cả văn bản của tệp trong một chuỗi [tương tự như docx2txt], chúng tôi có thể chạy doc_result. chữ

import docx2txt

result = docx2txt.process["zen_of_python_with_image.docx", "C:/path/to/store/files"]

0

Ngoài văn bản, chúng tôi cũng có thể lấy siêu dữ liệu về tệp bằng thuộc tính thuộc tính. Điều này trả về thông tin như người tạo tài liệu, ngày tạo/sửa đổi lần cuối và số lần sửa đổi

import docx2txt

result = docx2txt.process["zen_of_python_with_image.docx", "C:/path/to/store/files"]

1

Nếu tài liệu bạn đang cạo có đầu trang và chân trang, bạn cũng có thể loại bỏ chúng như thế này [lưu ý phiên bản số ít của “đầu trang” và “chân trang”]

import docx2txt

result = docx2txt.process["zen_of_python_with_image.docx", "C:/path/to/store/files"]

2

Chú thích cuối trang cũng có thể được trích xuất như thế này

import docx2txt

result = docx2txt.process["zen_of_python_with_image.docx", "C:/path/to/store/files"]

3

Nhận HTML được trả về với docx2python

Chúng tôi cũng có thể chỉ định rằng chúng tôi muốn nhận một đối tượng HTML được trả về bằng phương thức docx2python hỗ trợ một số loại thẻ bao gồm phông chữ [kích thước và màu sắc], văn bản in nghiêng, in đậm và gạch chân. Chúng ta chỉ cần xác định tham số “html = True”. Trong ví dụ bên dưới, chúng ta thấy The Zen of Python được in đậm và gạch chân. Tương ứng với điều này, chúng ta có thể thấy phiên bản HTML của điều này trong ảnh chụp nhanh thứ hai bên dưới. Tính năng HTML hiện không hỗ trợ các thẻ liên quan đến bảng, vì vậy tôi khuyên bạn nên sử dụng phương pháp mà chúng tôi đã thực hiện ở trên nếu bạn đang tìm cách loại bỏ các bảng khỏi tài liệu Word

Làm cách nào để đọc các bảng trong docx bằng Python?

Xử lý dữ liệu bảng thành pandas dataframe. Sử dụng các thuộc tính có sẵn của thư viện python-docx, đọc từng hàng của bảng và truy xuất văn bản từ từng ô và tạo danh sách python gồm danh sách chứa từng hàng. Then convert that python data structure to pandas DataFrame.

Tôi có thể đọc tài liệu Word bằng Python không?

Khoa học dữ liệu thực tế sử dụng Python . Đầu tiên chúng tôi cài đặt docx như hình dưới đây. Sau đó viết chương trình sử dụng các chức năng khác nhau trong mô-đun docx để đọc toàn bộ tệp theo đoạn văn. Chúng tôi sử dụng lệnh dưới đây để đưa mô-đun docx vào môi trường của chúng tôi. To read a word document we take help of the module named docx. We first install docx as shown below. Then write a program to use the different functions in docx module to read the entire file by paragraphs. We use the below command to get the docx module into our environment.

Làm cách nào để đọc tệp docx trong gấu trúc Python?

Để đọc một tệp văn bản trong Python, bạn làm theo các bước sau. Đầu tiên, mở một tệp văn bản để đọc bằng hàm open[]. Thứ hai, đọc văn bản từ tệp văn bản bằng phương thức tệp read[] , readline[] hoặc readlines[] của đối tượng tệp. Thứ ba, đóng tệp bằng phương thức đóng tệp []

Trình đọc màn hình có thể đọc bảng trong Word không?

Nếu bạn có thể Tab trơn tru qua bảng, từng ô và từng hàng, trình đọc màn hình sẽ không gặp vấn đề gì với nó . Trong các bảng tiếng Anh, phím Tab sẽ di chuyển từ trái sang phải, bắt đầu ở ô trên cùng bên trái và kết thúc ở ô dưới cùng bên phải.

Chủ Đề