python-docx之Word文档对象结构访问

docx创建(或打开)后的文档的主要结构单位是『段落』(Paragraph)。标题也好,目录也好,正文也好,都是段落。通过赋予段落不同的样式,形成不同功能的文档结构。创建结构文档,就是创建具有不同样式的段落

比段落更小的单位是『游程』(Run)。比方说,你想在一个段落里加重某几个字,那么加重的字就形成一个游程。一个段落至少包含一个游程。

python-docx通过文档对象的paragraphs获得『段落』和『游程』。

from docx import Document
doc=Document('test.docx')

for p in doc.paragraphs:    #列出所有段落对象
    print(p)

for p in doc.paragraphs:    #显示出所有段落内容文本
    print(p.text)

for p in doc.paragraphs:
    for r in p.runs:        #每个段落都有一个『游程』列表
        print(r.text)       #列出所有『游程』内容文本

对docx文档内容的访问,通过以下方式实现。(结果都一样,暂时还不明白其中的区别)

>>> doc.paragraphs[0].text
'我改改你看看'
>>> doc.paragraphs[0].runs[0].text
'我改改你看看'

和段落对象并列级别的就是表格对象(Table),同理可通过doc.tables获得文档中所有表格的集合列表。表格对象下面有行(Row)列(Column)和格(Cell) 对象,Table对象有两个属性rows和columns,分别是行列集合列表。表格中的格(Cell)对象可以使用以下五种方法获取:

  1. 使用Table对象的cell(row,col)方法。左上角的坐标为0,0;
  2. 使用Table对象的row_cells(row_index)方法得到一个list,它包含了某一行的按列排序的所有Cell
  3. 得到一个Row对象后,使用Row.cells属性得到该Row的按列排序的所有Cell
  4. 使用Table对象的column_cells(column_index)方法得到一个list,它包含了某一列的按行排序的所有Cell
  5. 得到一个Column对象后,使用Column.cells属性得到该Column的按行排序的所有Cell 

如果想遍历所有Cell,可以先遍历所有行(table.rows),再遍历每一行所有的Cell; 也可以先遍历所有列(table.columns),再遍历每一列所有的Cell。一个Cell对象最常用的属性是text。设置这个属性可以设定单元格的内容,读取这个属性可以获取单元格的内容。可以利用Cell对象的merge(other_cell)方法合并单元格。合并的方式为,以当前Cell为左上角,other_cell为右下角进行合并。

(本文知识摘自知乎博主:Jerry Jho,致谢!)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值