首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文本框中的Python docx段落

文本框中的Python docx段落
EN

Stack Overflow用户
提问于 2016-04-27 19:16:05
回答 2查看 6.7K关注 0票数 9

有没有办法用python-docx在文本框中访问和操作现有文档中的文本?

我试图通过迭代在文档的所有段落中找到一个关键字:

代码语言:javascript
复制
doc = Document('test.docx')

for paragraph in doc.paragraphs:
    if '<DATE>' in paragraph.text:
        print('found date: ', paragraph.text)

如果放在普通文本中,而不是放在文本框中,则会找到它。

EN

回答 2

Stack Overflow用户

发布于 2016-04-28 14:06:21

对于仅包含带格式文本的文本框,解决方法是使用带格式的浮动表格。它的样式可以类似于文本框(框架、颜色等)。并且可以通过docx API容易地访问。

代码语言:javascript
复制
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)
票数 5
EN

Stack Overflow用户

发布于 2016-04-28 02:06:49

不是通过API,至少现在还不是。您必须揭示它所在的XML结构,并深入到lxml级别,也许还需要XPath才能找到它。像这样的事情可能是一个开始:

代码语言:javascript
复制
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:

代码语言:javascript
复制
$ opc browse test.docx document.xml

http://opc-diag.readthedocs.org/en/latest/index.html

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36888189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档