python 读取 word 表格_2018-10-04 [日常]用Python读取word文档中的表格并比较

演示如下. 两个简单的word文档, 各有一个表格:

1288501-20190309114214894-2012825072.png

读取文档中的表格到列表(为演示只对单列表格操作):

import docx

def 取表格(文件名):

文件 = docx.Document(文件名)

首个表 = 文件.tables[0]

值 = []

for 行 in 首个表.rows:

for 格 in 行.cells:

值.append(格.text)

print(文件名 + " -> " + str(值))

return 值

表1 = 取表格('表1.docx')

读取结果:

表1.docx -> ['值1', '值2', '值3']

from deepdiff import DeepDiff

表1 = 取表格('表1.docx')

表2 = 取表格('表2.docx')

print(DeepDiff(表1, 表2))

输出结果(为更可读, 已手动格式化):

{

'values_changed':

{'root[1]':

{'new_value': '值2.5', 'old_value': '值2'}

},

'iterable_item_added':

{'root[3]': '值4'}

}

显示了修改的值和添加的值, 还挺好用. 实际的表格是两列, 需要按照某个键值作对比. 于是用字典, 正好DeepDiff也提供两个字典间的比较. 双列表文件演示:

1288501-20190309114236229-215393067.png

读取双列表到字典后, 进行比较:

import docx

from deepdiff import DeepDiff

from pprint import pprint

def 取表格(文件名):

文件 = docx.Document(文件名)

首个表 = 文件.tables[0]

值 = {}

for 行 in 首个表.rows:

格 = 行.cells

值[格[0].text] = 格[1].text

print(文件名 + " -> " + str(值))

return 值

表1 = 取表格('双列表1.docx')

表2 = 取表格('双列表2.docx')

pprint(DeepDiff(表1, 表2), indent=2)

输出如下:

{ 'dictionary_item_added': {"root['键3']"},

'values_changed': {"root['键2']": {'new_value': '值2.5', 'old_value': '值2'}}}

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2021 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值