使用 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
,等等,一旦你掌握了你想要的元素。
我正在使用 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
,等等,一旦你掌握了你想要的元素。