Модуль oodocx, упомянутый на той же странице, ссылается на пользователя в папку /examples, которая, похоже, не существует.
Я прочитал документацию python-docx 0.7.2, плюс все, что мог найти в Stackoverflow по этому вопросу, поэтому, пожалуйста, верьте, что я сделал свою "домашнюю работу".
Python - единственный язык, который я знаю (начинающий +, возможно, промежуточный), поэтому, пожалуйста, не предполагайте никаких знаний о C, Unix, xml и т.д.
Задача: открыть документ ms-word 2007+ с одной строкой текста в нем (чтобы все было в порядке) и заменить любое "ключевое" слово в словаре, которое встречается в этой строке текста со значением словаря. Затем закройте документ, сохраняя все остальное.
Линия текста (например) "Мы задержимся в морских камерах".
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')
Я не вижу ничего в документации, которая позволяет мне это делать - возможно, она есть, но я не понимаю, потому что все не написано на моем уровне.
Я следил за другими предложениями на этом сайте и пытался использовать более ранние версии модуля (https://github.com/mikemaccana/python-docx), который должен иметь "методы, такие как replace, advReplace" следующим образом: я открываю исходный код в интерпретаторе python и добавляю следующее в конце (это чтобы избежать столкновений с уже установленной версией 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)
Запуск этого процесса вызывает следующее сообщение об ошибке:
NameError: имя 'coreprops' не определено
Возможно, я пытаюсь сделать что-то, что не может быть сделано, но я был бы признателен за вашу помощь, если я пропущу что-то простое.
Если это имеет значение, я использую 64-разрядную версию Enthought Canopy на OSX 10.9.3