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

时间:2018-01-19 21:56:11

标签: python python-3.x python-docx

我正在使用python-docx 0.8.6和python 3.6来执行简单的搜索/替换操作。

我遇到的问题是,在迭代doc.paragraphs时,并不会显示所有文档的文本

为了调试,我试过了

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

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

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

编辑:如果存在任何差异,则缺少的文字包含在邮件合并字段中

1 个答案:

答案 0 :(得分:2)

邮件合并字段确实有所作为。遗憾的是,python-docx不够复杂,无法知道哪些“容器”元素包含可显示的文本,哪些不包含。所以它只报告处于“顶级”级别的段落(和表格)。

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

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