有没有办法用python-docx在文本框中访问和操作现有文档中的文本?
我试图通过迭代在文档的所有段落中找到一个关键字:
doc = Document('test.docx')
for paragraph in doc.paragraphs:
if '<DATE>' in paragraph.text:
print('found date: ', paragraph.text)如果放在普通文本中,而不是放在文本框中,则会找到它。
发布于 2016-04-28 14:06:21
对于仅包含带格式文本的文本框,解决方法是使用带格式的浮动表格。它的样式可以类似于文本框(框架、颜色等)。并且可以通过docx API容易地访问。
doc = Document('test.docx')
for table in doc.tables:
for row in table.rows:
for cell in row.cells:
for paragraph in cell.paragraphs:
if '<DATE>' in paragraph.text:
print('found date: ', paragraph.text)发布于 2016-04-28 02:06:49
不是通过API,至少现在还不是。您必须揭示它所在的XML结构,并深入到lxml级别,也许还需要XPath才能找到它。像这样的事情可能是一个开始:
body = doc._body
# assuming differentiating container element is w:textBox
text_box_p_elements = body.xpath('.//w:textBox//w:p')我不知道textBox是否是这里的实际元素名,您必须用其余的XPath路径详细信息对其进行排序,但这种方法可能会起作用。我经常使用类似的方法来解决API中尚未内置的特性。
opc-diag是一个检查XML的有用工具。基本方法是创建一个最小的.docx文件,其中包含您试图定位的对象类型。然后使用opc-diag检查保存文件时Word生成的XML:
$ opc browse test.docx document.xmlhttp://opc-diag.readthedocs.org/en/latest/index.html
https://stackoverflow.com/questions/36888189
复制相似问题