Hướng dẫn how do i edit a word document in python? - làm cách nào để chỉnh sửa tài liệu từ trong python?

Để chuẩn bị cho thị trường việc làm, tôi bắt đầu đánh bóng CV của mình. Tôi cố gắng giữ CV trên trang web của mình càng cập nhật càng tốt, nhưng nhiều nhà tuyển dụng và công ty thích một CV gọn gàng một trang trong tài liệu Microsoft Word. Tôi đã từng luôn tạo CV CV của mình trong latex, nhưng có vẻ như Word thường được ưa thích vì nó dễ dàng chỉnh sửa cho các bên thứ ba dễ dàng hơn.

Giữ cả phiên bản web, từ và pdf đều cập nhật và dễ chỉnh sửa có vẻ như là một nhiệm vụ khó chịu. Tôi có rất nhiều kinh nghiệm với việc tự động tạo các tài liệu PDF bằng latex và python, vì vậy tôi đã hình dung tại sao một tài liệu từ nên khác nhau? Hãy cùng đi sâu vào thế giới chỉnh sửa các tài liệu từ trong Python!

May mắn thay, có một thư viện cho điều này:

paragraph.text = "Willem Hendrik"
document.save["resume_edited.docx"]
9. Nó có thể được sử dụng để tạo các tài liệu từ từ đầu, nhưng việc cách điệu một tài liệu là một chút khó khăn. Thay vào đó, sức mạnh thực sự của nó nằm trong việc chỉnh sửa các tài liệu được tạo sẵn. Tôi đã đi trước và tạo ra một CV đẹp mắt trong Word, và bây giờ hãy để Lừa mở tài liệu này trong
paragraph.text = "Willem Hendrik"
document.save["resume_edited.docx"]
9. Một tài liệu Word được lưu trữ trong XML dưới mui xe và có thể có một cấu trúc cây phức tạp cho một tài liệu. Tuy nhiên, chúng tôi có thể tạo một tài liệu và sử dụng thuộc tính
document = Document["resume.docx"]
with open['resume.xml', 'w'] as f:
	f.write[document._element.xml]
1 cho một danh sách đầy đủ tất cả các đoạn trong tài liệu. Hãy để một đoạn văn và in nó nội dung văn bản.

from docx import Document

document = Document["resume.docx"]
paragraph = document.paragraphs[0]
print[paragraph.text]

Hóa ra đoạn đầu tiên chứa tên của tôi! Chỉnh sửa văn bản này rất dễ dàng; Chúng ta chỉ cần đặt một giá trị mới cho thuộc tính

document = Document["resume.docx"]
with open['resume.xml', 'w'] as f:
	f.write[document._element.xml]
2. Hãy để làm điều này và an toàn cho tài liệu.

paragraph.text = "Willem Hendrik"
document.save["resume_edited.docx"]

Dưới đây là hình ảnh của sự thay đổi kết quả; Thật không may, có vẻ như hai điều bổ sung đã xảy ra khi chỉnh sửa đoạn văn này: Phông chữ của đoạn văn đã thay đổi và hộp thanh / văn bản ở phía bên tay phải đã biến mất hoàn toàn!

Điều này không tốt, nhưng để hiểu những gì đã xảy ra với hộp văn bản, chúng ta cần đào sâu vào XML của tài liệu. Chúng ta có thể biến tài liệu thành một tệp XML như vậy:

document = Document["resume.docx"]
with open['resume.xml', 'w'] as f:
	f.write[document._element.xml]

Có vẻ như vấn đề là hộp văn bản ở bên phải được lồng bên trong một đối tượng khác, điều này rõ ràng không được xử lý đúng cách. Vấn đề này rất dễ khắc phục bằng cách sửa đổi tài liệu từ. Tuy nhiên, thanh bên phải ở bên cạnh bao gồm 2 hộp văn bản và hộp trên cùng với thông tin liên lạc của tôi sẽ biến mất nếu tôi thay đổi đoạn đầu tiên. Nhưng, nó không biến mất nếu tôi thay đổi đoạn thứ hai; Nó chỉ xảy ra nếu tôi thay đổi đoạn 1 hoặc 3 [và cái sau trống rỗng]. Tôi đã thử chèn hai đoạn trước đoạn văn cụ thể này hoặc thay đổi phong cách của đoạn cụ thể này, nhưng vấn đề vẫn còn.

Nhìn vào XML, vấn đề rất rõ ràng: Phần tử hộp văn bản nằm trong đoạn văn này! Hóa ra có một chút khó khăn để tránh điều này, vì vậy bây giờ chúng ta hãy thử thay đổi đoạn thứ hai, thay đổi từ ngữ sơ yếu lý lịch cho chương trình giảng dạy của nhóm Vitae Vitae.

document = Document["resume.docx"]
paragraph = document.paragraphs[1]
print[paragraph.text]
paragraph.text = "Curriculum Vitae"
document.save["CV.docx"]

Nếu chúng ta làm điều này thì không có vấn đề gì với các hộp văn bản biến mất, nhưng thật không may, phong cách của đoạn này vẫn được thiết lập lại khi chúng ta làm điều này. Hãy để một cái nhìn về cách XML thay đổi khi chúng ta chỉnh sửa đoạn này. Bỏ qua thông tin không liên quan, trước khi thay đổi có vẻ như sau:


    
    R
    
    
    esume
    

Và sau đó có vẻ như thế này:


    
    Curriculum Vitae
    

Trong Word, mỗi đoạn [

document = Document["resume.docx"]
with open['resume.xml', 'w'] as f:
	f.write[document._element.xml]
3] được chia thành nhiều lần chạy [
document = Document["resume.docx"]
with open['resume.xml', 'w'] as f:
	f.write[document._element.xml]
4]. Những gì chúng ta thấy ở đây là ban đầu đoạn văn là hai lần chạy, và sau khi sửa đổi nó, nó đã trở thành một lần chạy duy nhất. Tuy nhiên, có vẻ như trong cả hai trường hợp, thông tin phong cách hoàn toàn giống nhau, vì vậy tôi không hiểu tại sao phong cách thay đổi sau khi sửa đổi. Trong trường hợp này nếu tôi getpe từ ‘tiếp tục trong tài liệu từ gốc, đoạn này trở thành một lần chạy duy nhất, nhưng vẫn là kiểu thay đổi sau khi chỉnh sửa và tôi vẫn không thấy lý do tại sao điều này xảy ra khi nhìn vào XML.

Nhìn vào mã nguồn của

paragraph.text = "Willem Hendrik"
document.save["resume_edited.docx"]
9 Tôi nhận thấy rằng khi chúng ta gọi
document = Document["resume.docx"]
with open['resume.xml', 'w'] as f:
	f.write[document._element.xml]
6, điều xảy ra là nội dung của đoạn văn sẽ bị xóa, và sau đó một lần chạy mới được thêm vào với văn bản mong muốn. Không rõ ràng với tôi về chính xác thông tin kiểu được lưu trữ, nhưng dù sao đi nữa, có một cách giải quyết đơn giản cho những gì chúng tôi đang cố gắng thực hiện: chúng tôi chỉ có thể sửa đổi văn bản của lần chạy đầu tiên trong đoạn văn, thay vì xóa Toàn bộ đoạn văn và thêm một đoạn mới. Điều này trên thực tế cũng hoạt động để chỉnh sửa đoạn đầu tiên, trong đó trước khi chúng tôi gặp vấn đề với các hộp văn bản biến mất:

document = Document["resume.docx"]
with open['resume.xml', 'w'] as f:
	f.write[document._element.xml]

# Change 'Rik Voorhaar' for 'Willem Hendrik Voorhaar'
paragraph = document.paragraphs[0]
run = paragraph.runs[1]
run.text = 'Willem Hendrik Voorhaar'

# Change 'Resume' for 'Curriculum Vitae'
paragraph = document.paragraphs[1]
run = paragraph.runs[0]
run.text = 'Curriculum Vitae'
document.save['CV.docx']

Làm điều này thay đổi văn bản, nhưng để lại tất cả các thông tin phong cách giống nhau. Được rồi, bây giờ chúng ta làm thế nào để chỉnh sửa văn bản. Nó khó khăn hơn người ta có thể mong đợi, nhưng nó hoạt động!

Xử lý các hộp văn bản

Hãy nói rằng tiếp theo, chúng tôi muốn chỉnh sửa hộp văn bản ở phía bên phải của tài liệu và thêm một kỹ năng vào danh sách các kỹ năng của chúng tôi. Chúng tôi đã đi sâu vào các hoạt động bên trong của các tài liệu từ, vì vậy, thật công bằng khi nói rằng chúng tôi biết cách sử dụng Microsoft Word, vì vậy hãy để thêm kỹ năng của Microsoft Microsoft Word vào danh sách.

Để làm điều này trước tiên, chúng tôi muốn tìm ra đoạn nào thông tin này được lưu trữ. Chúng ta có thể làm điều này bằng cách trải qua tất cả các đoạn văn trong tài liệu và tìm kiếm các kỹ năng văn bản.

import re
pattern = re.compile["Skills"]
for p in document.paragraphs:
    if pattern.search[p.text]:
        print["Found the paragraph!"]
        break
else:
    print["Did not find the paragraph :["]

Did not find the paragraph :[

Có vẻ như không may không có đoạn văn phù hợp! Điều này là do đoạn mà chúng tôi muốn nằm trong hộp văn bản và các hộp văn bản sửa đổi không được hỗ trợ trong

paragraph.text = "Willem Hendrik"
document.save["resume_edited.docx"]
9. Đây là một vấn đề đã biết, nhưng thay vì từ bỏ, tôi quyết định thêm hỗ trợ để sửa đổi các hộp văn bản thành
paragraph.text = "Willem Hendrik"
document.save["resume_edited.docx"]
9! Hóa ra không quá khó thực hiện, mặc dù tôi có kiến ​​thức hạn chế về cả gói và cấu trúc bên trong của các tài liệu từ.

Bước đầu tiên là hiểu cách các hộp văn bản được mã hóa trong XML. Hóa ra cấu trúc là một cái gì đó như thế này:


    
        
            
                
                    
                        
                            
                            ...
                            
                        
                                     
                
            
        
    
    
        
            
                
                ...
                
            
        
    

Bên trong của hai yếu tố

document = Document["resume.docx"]
with open['resume.xml', 'w'] as f:
	f.write[document._element.xml]
9 giống hệt nhau. Thông tin được lưu trữ hai lần có lẽ vì lý do di sản. Một Google nhanh chóng tiết lộ rằng
document = Document["resume.docx"]
paragraph = document.paragraphs[1]
print[paragraph.text]
paragraph.text = "Curriculum Vitae"
document.save["CV.docx"]
0 là không gian tên XML được giới thiệu trong Office 2010 và WPS viết tắt cho hình dạng xử lý văn bản. Do đó, hộp văn bản được lưu trữ hai lần để duy trì khả năng tương thích ngược với các phiên bản từ cũ hơn. Không chắc chắn nhiều người vẫn sử dụng Office 2006 Dù bằng cách nào, điều này có nghĩa là nếu chúng ta muốn cập nhật nội dung của hộp văn bản, chúng ta cần phải làm điều đó ở hai nơi.

Tiếp theo chúng ta cần tìm ra cách thao túng các đối tượng từ này. Ý tưởng của tôi là tạo một lớp

document = Document["resume.docx"]
paragraph = document.paragraphs[1]
print[paragraph.text]
paragraph.text = "Curriculum Vitae"
document.save["CV.docx"]
1, được liên kết với phần tử
document = Document["resume.docx"]
paragraph = document.paragraphs[1]
print[paragraph.text]
paragraph.text = "Curriculum Vitae"
document.save["CV.docx"]
2 và đảm bảo rằng cả hai phần tử
document = Document["resume.docx"]
with open['resume.xml', 'w'] as f:
	f.write[document._element.xml]
9 luôn được cập nhật cùng một lúc. Đầu tiên chúng tôi tạo một lớp mã hóa một phần tử
document = Document["resume.docx"]
with open['resume.xml', 'w'] as f:
	f.write[document._element.xml]
9. Đối với điều này, chúng tôi có thể xây dựng trên lớp
document = Document["resume.docx"]
paragraph = document.paragraphs[1]
print[paragraph.text]
paragraph.text = "Curriculum Vitae"
document.save["CV.docx"]
5 đã được triển khai trong
paragraph.text = "Willem Hendrik"
document.save["resume_edited.docx"]
9. Trộn trong lớp này cung cấp hỗ trợ tự động để thao tác các đoạn bên trong container.

paragraph.text = "Willem Hendrik"
document.save["resume_edited.docx"]
0

Đưa ra một đối tượng

document = Document["resume.docx"]
paragraph = document.paragraphs[1]
print[paragraph.text]
paragraph.text = "Curriculum Vitae"
document.save["CV.docx"]
2, chúng ta có thể truy cập hai phần tử
document = Document["resume.docx"]
with open['resume.xml', 'w'] as f:
	f.write[document._element.xml]
9 bằng các thông số kỹ thuật XPath sau:

paragraph.text = "Willem Hendrik"
document.save["resume_edited.docx"]
1

Sau đó tạo ra một lớp

document = Document["resume.docx"]
paragraph = document.paragraphs[1]
print[paragraph.text]
paragraph.text = "Curriculum Vitae"
document.save["CV.docx"]
1 thô sơ rất đơn giản. Chúng tôi dựa trên lớp

    
    R
    
    
    esume
    

0 trong
paragraph.text = "Willem Hendrik"
document.save["resume_edited.docx"]
9. Lớp học này có nghĩa là để lưu trữ và thao túng trẻ em của một yếu tố XML.

paragraph.text = "Willem Hendrik"
document.save["resume_edited.docx"]
2

Cho đến nay, điều này chỉ tốt để lưu trữ hộp văn bản, chúng tôi vẫn cần một số mã để thực sự thao tác nó. Cũng sẽ tuyệt vời nếu chúng ta có cách tìm tất cả các hộp văn bản trong một tài liệu. Điều này đơn giản như tìm thấy tất cả các yếu tố

document = Document["resume.docx"]
paragraph = document.paragraphs[1]
print[paragraph.text]
paragraph.text = "Curriculum Vitae"
document.save["CV.docx"]
2 với chính xác hai yếu tố
document = Document["resume.docx"]
with open['resume.xml', 'w'] as f:
	f.write[document._element.xml]
9. Chúng ta có thể sử dụng chức năng sau:

paragraph.text = "Willem Hendrik"
document.save["resume_edited.docx"]
3

Sau đó, chúng tôi cập nhật lớp


    
    R
    
    
    esume
    

4 với thuộc tính

    
    R
    
    
    esume
    

5 mới:

paragraph.text = "Willem Hendrik"
document.save["resume_edited.docx"]
4

Bây giờ, hãy để thử nghiệm điều này:

paragraph.text = "Willem Hendrik"
document.save["resume_edited.docx"]
5

paragraph.text = "Willem Hendrik"
document.save["resume_edited.docx"]
6

Bây giờ để thao túng phần kỹ năng của người Viking như chúng tôi muốn ban đầu, trước tiên chúng tôi tìm thấy đoạn văn phù hợp. Vì hai đối tượng

document = Document["resume.docx"]
with open['resume.xml', 'w'] as f:
	f.write[document._element.xml]
9 có cùng một đoạn văn, chúng ta cần tìm số lượng đoạn nào chứa văn bản và trong đó hộp văn bản:

paragraph.text = "Willem Hendrik"
document.save["resume_edited.docx"]
7

Bây giờ để chèn một kỹ năng mới, chúng ta cần tạo một đoạn văn mới với văn bản Microsoft Microsoft Word. Đối với điều này, chúng ta có thể tìm thấy đoạn văn ngay sau đó, và phương thức


    
    R
    
    
    esume
    

7 này với thông tin văn bản và phong cách phù hợp. Đoạn văn trong câu hỏi là từ có từ nghiên cứu từ ngữ. Tôi muốn sao chép phong cách của đoạn này vào đoạn mới, nhưng vì một số lý do, thông tin phong cách trống rỗng cho đoạn này. Tuy nhiên, tôi biết rằng phong cách của đoạn này phải là

    
    R
    
    
    esume
    

8, vì vậy tôi chỉ có thể sử dụng nó trực tiếp.

paragraph.text = "Willem Hendrik"
document.save["resume_edited.docx"]
8

Khi bây giờ mở tài liệu Word, chúng tôi thấy mục Microsoft Microsoft Word trong danh sách các kỹ năng của tôi, với phong cách phù hợp và mọi thứ. Tôi đã lừa dối một chút; Tôi cần thực hiện một số thay đổi kỹ thuật bổ sung cho mã cho tất cả các hoạt động này, nhưng các chi tiết không phải là siêu quan trọng. Nếu bạn muốn sử dụng tính năng này, bạn có thể sử dụng Fork of Python-Docx của tôi. Giải pháp của tôi vẫn còn một chút hacky, vì vậy tôi không nghĩ rằng nó sẽ được thêm vào kho lưu trữ chính, nhưng nó hoạt động tốt cho mục đích của tôi.

Sự kết luận

Tóm lại, chúng ta có thể sử dụng Python để chỉnh sửa tài liệu từ. Tuy nhiên, gói

paragraph.text = "Willem Hendrik"
document.save["resume_edited.docx"]
9 không hoàn toàn trưởng thành và sử dụng nó để chỉnh sửa các tài liệu từ được cách điệu cao là một chút đau đớn [nhưng có thể!]. Tuy nhiên, khá dễ dàng để mở rộng với chức năng mới, trong trường hợp bạn cần phải làm điều này. Mặt khác, có chức năng khá rộng rãi trong Visual Basic để chỉnh sửa các tài liệu từ và toàn bộ API từ được xây dựng xung quanh Visual Basic.

Mặc dù bây giờ tôi có tất cả các công cụ có sẵn để tự động cập nhật CV của mình bằng Python, tôi thực sự sẽ không làm việc đó. Đó là rất nhiều công việc để thiết lập đúng và cần bảo trì tích cực bao giờ hết tôi muốn thay đổi kiểu dáng của CV. Có lẽ đó là một ý tưởng tốt hơn để chỉnh sửa thủ công mỗi khi tôi cần. Tự động hóa isn luôn luôn xứng đáng. Nhưng tôi sẽ rất ngạc nhiên nếu kỹ năng mới tìm thấy này sẽ hữu ích tại một thời điểm nào đó trong tương lai đối với tôi.

Bài viết gần đây

GMRES: Hoặc cách thực hiện đại số tuyến tính nhanh

Ngày 10 tháng 3 năm 2022 24 phút đọc
24 minute read

Hệ thống bình phương nhỏ nhất tuyến tính bật lên ở khắp mọi nơi, và có nhiều cách nhanh chóng để giải quyết chúng. Chúng tôi sẽ nhìn vào một cách như vậy: GMRES.

DeconVolution #2: Tinh thần hình ảnh

Ngày 9 tháng 4 năm 2021 15 phút Đọc
15 minute read

Để tự động làm sắc nét hình ảnh, trước tiên chúng ta cần hiểu làm thế nào một máy tính có thể đánh giá hình ảnh của một hình ảnh tự nhiên như thế nào.

Làm cách nào để chỉnh sửa Docx trong Python?

Cách chỉnh sửa tài liệu Microsoft Word bằng Python..
Từ tài liệu nhập tài liệu docx = tài liệu ["sơ yếu lý lịch.docx"] đoạn = tài liệu. Đoạn văn [0] in [đoạn. ....
Rik Voorhaar ..
đoạn văn. ....
Document = document ["Resume.docx"] với Open ['Resume.xml', 'W'] là f: f. ....
Document = document ["Resume.docx"] đoạn = Document ..

Làm thế nào để bạn viết vào một tài liệu từ trong Python?

Tạo một tệp tài liệu hoặc tài liệu từ Python..
Tạo một đối tượng của lớp tài liệu ..
Tạo một đối tượng của lớp DocumentBuilder ..
Chèn văn bản vào tài liệu bằng DocumentBuilder.viết phương pháp..
Lưu tài liệu Word bằng tài liệu.Phương thức lưu [] ..

Làm cách nào để mở một tệp từ trong Python?

Khoa học dữ liệu thực tế bằng cách sử dụng Python để đọc một tài liệu từ mà chúng tôi nhận trợ giúp của mô -đun có tên Docx.Trước tiên chúng tôi cài đặt DOCX như hình dưới đây.Sau đó viết mộ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 các đ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 thế nào tôi có thể chỉnh sửa một tài liệu từ?

Nhấp vào Chỉnh sửa tài liệu> Chỉnh sửa trong Word cho Web để thay đổi tài liệu.Khi bạn mở một tài liệu từ OneDrive, Word cho Web sẽ hiển thị nó trong Chế độ xem đọc.Để thay đổi tài liệu của bạn, hãy chuyển sang Chỉnh sửa Chế độ xem, nơi bạn có thể thêm và xóa nội dung và làm những việc khác, chẳng hạn như: Thêm bảng và hình ảnh.. When you open a document from OneDrive, Word for the web displays it in Reading view. To make changes to your document, switch to Editing view, where you can add and delete content and do other things, such as: Add tables and pictures.

Bài Viết Liên Quan

Chủ Đề