在同一页提到的 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'
也许我正在尝试做一些不可能的事情,但如果我错过了什么简单的东西,我会感激您的帮助。
如果这很重要,我正在使用Enthought的Canopy 64位版本,在OSX 10.9.3上运行。
<w:t>
元素中,也可能分成两个甚至三个部分,并且甚至可能出现在不同的运行(<w:r>
元素,父级为t元素)中。替换一个单词需要重新组合包含它的元素。有很多可能的情况和规则来控制如何将其重新组合而不会搞砸它。如果情况简单,你可以通过简单地重写文本来完成,但否则这是一项相当大的工作。如果您满意,请不要忘记投票并接受答案 :) - scanny