2017-08-22 11 views
10

Tôi đang sử dụng thư viện docx Python để tạo tài liệu, mà tôi muốn có thể mở và tìm lỗi chính tả. Nhưng khi tôi mở tài liệu không có cờ lỗi chính tả (gạch dưới màu đỏ) hoặc được xác định nếu tôi chạy kiểm tra lỗi chính tả. Nếu tôi chỉnh sửa một dòng hoặc sao chép, hãy cắt và dán nội dung lại thành từ, chức năng chính tả hoạt động như mong đợi.Khi sử dụng Python docx làm cách nào để bật chính tả trong tài liệu đầu ra?

Có cách nào để lấy tài liệu đầu ra hiển thị/nhận ra lỗi chính tả trong tài liệu đầu ra tự động không? Tôi đã chơi xung quanh với cờ "no_proof" nhưng điều đó dường như không giúp ích gì. (Sử dụng Python 64 bit 3.4, docx 8.6 trên hộp Windows, Mở đầu ra trong Word 2013)

Cảm ơn mọi ý tưởng!

Mã để tái sản xuất:

from docx import Document 
document = Document() 
paragraph = document.add_paragraph('This has a spellling errror') 
document.save(r'SpellingTester.docx') 

Output trong Word:

Trả lời

4

tôi sẽ cố gắng sử dụng document.settings đối tượng mà nó gói các yếu tố nút lxml của tài liệu. Như bạn có thể thấy từ tài liệu có thuộc tính hideSpellingErrors.

Python DOCX Settings

<xsd:element name="hideSpellingErrors" type="CT_OnOff" minOccurs="0"/> 

EDIT: Sau khi nghiên cứu một chút nữa tôi sẽ cố gắng một cái gì đó như thế:

import docx 

document = docx.Document() 

DOCX = '{http://schemas.openxmlformats.org/wordprocessingml/2006/main}' 

element = document.settings.element.find(DOCX + 'proofState') 
element.attrib[DOCX + 'grammar'] = 'dirty' 
element.attrib[DOCX + 'spelling'] = 'dirty' 

document.add_paragraph("This has a spellling errror") 
document.save("test.docx") 

Với DOCX tiền tố có thể thay đổi, nhưng nó dễ dàng đọc trong các yếu tố lxml. Tôi không biết ngay bây giờ nếu có cách nào để thực hiện mọi việc trực tiếp và rõ ràng hơn nhưng điều này phù hợp với tôi.

Thông tin thêm về proofState thiết lập trong docx:

+0

Làm việc như một nét duyên dáng! Cảm ơn bạn. –

Các vấn đề liên quan