Mô -đun OODOCX được đề cập trong cùng một trang đề cập đến người dùng đến thư mục /ví dụ dường như không có ở đó. Tôi đã đọc tài liệu của Python-docx 0,7.2, cộng với tất cả mọi thứ tôi có thể tìm thấy trong Stackoverflow về chủ đề này, vì vậy xin vui lòng tin rằng tôi đã hoàn thành bài tập về nhà của tôi.
I have read the documentation of python-docx 0.7.2, plus everything I could find in Stackoverflow on the subject, so please believe that I have done my “homework”.
Python là ngôn ngữ duy nhất tôi biết [người mới bắt đầu+, có thể là trung gian], vì vậy xin vui lòng không cho rằng bất kỳ kiến thức nào về C, UNIX, XML, v.v.
Nhiệm vụ: Mở một tài liệu MS-word 2007+ với một dòng văn bản duy nhất trong đó [để giữ cho mọi thứ đơn giản] và thay thế bất kỳ từ khóa nào của Google trong từ điển xảy ra trong dòng văn bản đó với giá trị từ điển của nó. Sau đó đóng tài liệu giữ mọi thứ khác giống nhau.
Dòng văn bản [ví dụ] Chúng tôi sẽ nán lại trong các phòng biển.
from docx import Document
document = Document['/Users/umityalcin/Desktop/Test.docx']
Dictionary = {‘sea’: “ocean”}
sections = document.sections
for section in sections:
print[section.start_type]
#Now, I would like to navigate, focus on, get to, whatever to the section that has my
#single line of text and execute a find/replace using the dictionary above.
#then save the document in the usual way.
document.save['/Users/umityalcin/Desktop/Test.docx']
Tôi không nhìn thấy bất cứ điều gì trong tài liệu cho phép tôi thực hiện điều này có lẽ nó ở đó nhưng tôi không nhận được nó vì mọi thứ không được đánh vần ở cấp độ của tôi.
Tôi đã theo dõi các đề xuất khác trên trang web này và đã cố gắng sử dụng các phiên bản trước của mô-đun [//github.com/mikemaccana/python-docx] được cho là có "các phương thức như thay thế, advreplace" như sau: Tôi mở mã nguồn trong trình thông dịch Python và thêm thông tin sau ở cuối [điều này là để tránh các cuộc đụng độ với phiên bản đã được cài đặt 0.7.2]:
document = opendocx['/Users/umityalcin/Desktop/Test.docx']
words = document.xpath['//w:r', namespaces=document.nsmap]
for word in words:
if word in Dictionary.keys[]:
print "found it", Dictionary[word]
document = replace[document, word, Dictionary[word]]
savedocx[document, coreprops, appprops, contenttypes, websettings,
wordrelationships, output, imagefiledict=None]
Chạy này tạo ra thông báo lỗi sau:
NameError: Tên 'CoreProps' không được định nghĩa
Có lẽ tôi đang cố gắng làm điều gì đó không thể thực hiện được nhưng tôi sẽ đánh giá cao sự giúp đỡ của bạn nếu tôi thiếu một cái gì đó đơn giản.
Nếu điều này quan trọng, tôi đang sử dụng phiên bản 64 bit của Canopy của Enters trên OSX 10.9.3
python-docx
cho phép bạn tạo các tài liệu mới cũng như thay đổi các tài liệu hiện có. Trên thực tế, nó chỉ cho phép bạn thay đổi các tài liệu hiện có; Nó chỉ là nếu bạn bắt đầu với một tài liệu không có nội dung nào, ban đầu nó có thể cảm thấy giống như bạn tạo ra một tài liệu từ đầu.
Đặc điểm này là một trong những mạnh mẽ. Rất nhiều tài liệu trông được xác định bởi các phần còn lại khi bạn xóa tất cả các nội dung. Những thứ như phong cách và tiêu đề trang và chân trang được chứa tách biệt với nội dung chính, cho phép bạn đặt nhiều tùy chỉnh trong tài liệu bắt đầu của bạn sau đó xuất hiện trong tài liệu bạn sản xuất.
Hãy cùng bước đi qua các bước để tạo một tài liệu một ví dụ tại một thời điểm, bắt đầu với hai trong số những điều chính bạn có thể làm với một tài liệu, mở nó và lưu nó.
Mở một tài liệu
Cách đơn giản nhất để bắt đầu là mở một tài liệu mới mà không cần chỉ định một tệp để mở:
from docx import Document document = Document[] document.save['test.docx']
Điều này tạo ra một tài liệu mới từ mẫu mặc định tích hợp và lưu nó không thay đổi vào một tệp có tên ‘test.docx. Cái gọi là mẫu mặc định, thực sự chỉ là một tệp Word không có nội dung, được lưu trữ với gói python-docx
được cài đặt. Nó rất giống với bạn nhận được bằng cách chọn mẫu tài liệu Word sau khi chọn tệp Word Word> Mới từ mục menu mẫu.File > New from Template… menu item.
Thực sự mở một tài liệu
Nếu bạn muốn kiểm soát nhiều hơn đối với tài liệu cuối cùng hoặc nếu bạn muốn thay đổi một tài liệu hiện có, bạn cần mở một tài liệu bằng tên tệp:
document = Document['existing-document-file.docx'] document.save['new-file-name.docx']
Những điều cần lưu ý:
- Bạn có thể mở bất kỳ từ 2007 hoặc sau đó tệp theo cách này [các tệp .doc từ Word 2003 và trước đó đã giành được công việc]. Mặc dù bạn có thể không thể thao túng tất cả các nội dung, nhưng bất cứ thứ gì đã có trong đó sẽ tải và tiết kiệm tốt. Bộ tính năng vẫn đang được xây dựng, vì vậy bạn không thể thêm hoặc thay đổi những thứ như tiêu đề hoặc chú thích, nhưng nếu tài liệu có chúng
python-docx
đủ lịch sự để để chúng một mình và đủ thông minh để lưu chúng mà không thực sự hiểu chúng là gì . - Nếu bạn sử dụng cùng một tên tệp để mở và lưu tệp,
python-docx
sẽ ngoan ngoãn ghi đè lên tệp gốc mà không cần nhìn trộm. Bạn muốn đảm bảo rằng, những gì bạn dự định.
Mở một tài liệu giống như tệp
python-docx
có thể mở một tài liệu từ cái gọi là đối tượng giống như tệp. Nó cũng có thể lưu vào một đối tượng giống như tệp. Điều này có thể hữu ích khi bạn muốn lấy nguồn hoặc tài liệu đích qua kết nối mạng hoặc từ cơ sở dữ liệu và don sắt muốn [hoặc aren được phép] tương tác với hệ thống tệp. Trong thực tế, điều này có nghĩa là bạn có thể truyền một tệp mở hoặc chuỗi Stringio/byteo để mở hoặc lưu tài liệu như vậy:
f = open['foobar.docx', 'rb'] document = Document[f] f.close[] # or with open['foobar.docx', 'rb'] as f: source_stream = StringIO[f.read[]] document = Document[source_stream] source_stream.close[] ... target_stream = StringIO[] document.save[target_stream]
Tham số chế độ mở tệp ____1010 được yêu cầu trên tất cả các hệ điều hành. Nó mặc định là
document = opendocx['/Users/umityalcin/Desktop/Test.docx']
words = document.xpath['//w:r', namespaces=document.nsmap]
for word in words:
if word in Dictionary.keys[]:
print "found it", Dictionary[word]
document = replace[document, word, Dictionary[word]]
savedocx[document, coreprops, appprops, contenttypes, websettings,
wordrelationships, output, imagefiledict=None]
1 đôi khi đủ, nhưng ’B, [chọn chế độ nhị phân] được yêu cầu trên Windows và ít nhất một số phiên bản Linux để cho phép ZipFile mở tệp.Được rồi, vì vậy bạn đã mở một tài liệu và khá chắc chắn rằng bạn có thể lưu nó ở đâu đó sau này. Bước tiếp theo là có được một số nội dung trong đó