使用 python-docx 时缺少文档文本

Missing document text when using python-docx

我正在使用 python-docx 0.8.6 和 python 3.6 来执行简单的 search/replace 操作。

我遇到了一个问题,在遍历 doc.paragraphs

时,并非所有文档的文本都出现了

为了调试我试过了

doc = Document(input_file)
fullText = []
for para in doc.paragraphs:
    fullText.append(para.text)
print('\n'.join(fullText))

似乎只打印了大约一半的文件内容。

文件中没有表格或特殊格式。为什么 python-docx 无法读取如此多的文档内容?

编辑: 丢失的文本包含在邮件合并字段中,如果有任何区别的话

邮件合并字段确实有所作为。不幸的是,python-docx 不够复杂,无法知道哪些 "container" 元素包含可显示文本,哪些不包含。所以它只报告 "top" 级别的段落(和表格)。

对于修订标记,这也是一个限制,例如,有两段或多段文本,其中只有一段出现,这取决于修订标记设置(显示原件、显示编辑后的最新版本等) .).

使用 python-docx 解决它的唯一方法是自己导航 XML,尽管 python-docx 中的一些域对象可能很方便,例如 Paragraph,等等,一旦你掌握了你想要的元素。