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,致谢!)

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
50个程序案例 程序1:数字组合 2 程序2:猜猜这个数是多少? 3 程序3:判断这是一年中的第几天? 3 程序4:判断整数大小 4 程序5:斐波那契数列 5 程序6:水仙花数 6 程序7:数字求和 6 程序8:平方根 7 程序9:if语句 8 程序10:阿姆斯特朗数 8 程序11:输出指定范围的素数(else语句) 9 程序12:生成日历 10 程序13:统计字符串中的字符 11 程序14:文件的读取 12 程序15:十进制转二进制、八进制、十六进制 13 程序16: 生成10个两位的随机素食 13 程序17: 计算三角形面积 14 程序18:字符串大小写转换 15 程序19: 获取昨天日期 16 程序20: 变量交换 17 程序21: 质数判断 17 程序22: 简单计算器 18 程序23: 最大公约数 20 程序24: 最小公倍数 21 程序25: 字符串判断 22 程序26: 合并文件数据 23 程序27: 猜数游戏 24 程序28:为数据加密 25 程序29:平方运算 26 程序30: 计算0-7组成的奇数个数 27 程序31:求值 27 程序32:猴子分桃 28 程序33:淘汰游戏 28 程序34:分解质因子 29 程序35:取整数右端的4~7位 30 程序36:判断4位回文数 31 程序37:汉诺塔(递归函数) 32 程序38:判断闰年 33 程序39:寻找自幂数(38) 34 程序40:多维数据 35 程序41: 验证哥德巴赫猜想 36 程序42: 解方程 37 程序43: 异常处理 38 程序44: 统计不及格人数(continue语句) 39 程序45: 求直角三角形的斜边 39 程序46: 问年龄 40 程序47:求相同数字的和 41 程序48:找出1000以内的所有完数 42 程序49:公民类 42 程序50:复数类 43
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值