python - 如何使用Python迭代读取word中的段落、表格和图片?
问题描述
到目前为止,我已经找到了一种顺序和迭代地阅读 word 中的段落和表格的方法,但我对如何顺序阅读图片感到困惑。请问大家帮我在原代码的基础上如何实现单词图片的序列迭代?这是我当前的代码
from docx.document import Document as _Document
from docx.oxml.text.paragraph import CT_P
from docx.oxml.table import CT_Tbl
from docx.table import _Cell, Table, _Row
from docx.text.paragraph import Paragraph
import docx
path = './test.docx'
doc = docx.Document(path)
def iter_block_items(parent):
if isinstance(parent, _Document):
parent_elm = parent.element.body
elif isinstance(parent, _Cell):
parent_elm = parent._tc
elif isinstance(parent, _Row):
parent_elm = parent._tr
else:
raise ValueError("something's not right")
for child in parent_elm.iterchildren():
if isinstance(child, CT_P):
yield Paragraph(child, parent)
elif isinstance(child, CT_Tbl):
yield Table(child, parent)
for block in iter_block_items(doc):
# read Paragraph
if isinstance(block, Paragraph):
print(block.text)
# read table
elif isinstance(block, Table):
print(block.style.name)
解决方案
您想修改iter_block_items
迭代体以处理图片的情况:目前它只处理(并产生)段落和表格。
我真的不知道格式,但您可能需要 docx.oxml.shape.CT_Picture 作为“标志类型”。浏览其文档,python-docx 似乎没有表格或段落包装器的图片版本。
推荐阅读
- javascript - 如何根据请求发送 XMLHttpRequest?
- javascript - 为什么 onChange 在一个特定用例中不触发?
- mysql - OSGi 途中:如何使用 MySQL 而不是默认的 H2
- r - 具有分类/因子变量的多级多重插补(MICE)?
- google-api - 有没有办法使用 google doc API 用样式文本替换文本?
- swift - 如何更改来自结构的项目的布尔值并因此更新清单?
- python - Numpy:如何撤消转置
- bash - 具有多个排序键的文件排序列表
- python - 如何在 Python 中正确编码?
- vb.net - WebService 法语字符被问号替换