Модулът 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's Canopy на OSX 10.9.3