[日常]用Python读取word文档中的表格并比较

简介: 用Python3读取word文档中的表格并比较. Create a wubi encoding editor using Python with Chinese naming.

最近想对某些word文档(docx)的表格内容作比较, 于是找了一下相关工具. 参考Automate the Boring Stuff with Python中的word部分, 试用了python-docx - python-docx 0.8.7 documentation

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

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

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']

接着找到这个做比较的python库seperman/deepdiff, 来源: Get difference between two lists

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也提供两个字典间的比较. 双列表文件演示:
2018_10_04_docx__

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

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'}}}

源码在: program-in-chinese/house_of_10000_business

相关文章
|
1月前
|
XML 关系型数据库 MySQL
python将word(doc或docx)的内容导入mysql数据库
用python先把doc文件转换成docx文件(这一步也可以不要后续会说明),然后读取docx的文件并另存为htm格式的文件(上一步可以直接把doc文件另存为htm),python根据bs4获取p标签里的内容,如果段落中有图片则保存图片。(图片在word文档中的位置可以很好的还原到生成的数据库内容) 我见网上有把docx压缩后解压获取图片的,然后根据在根据xml来读取图片的位置,我觉得比较繁琐。用docx模块读取段落的时候还需要是不是判断段落中有分页等,然而转成htm之后就不用判断那么多直接判断段落里的样式或者图片等就可以了。
22 1
|
1月前
|
测试技术 API 数据处理
Python办公自动化:解锁高效工作流程,掌握文档处理的艺术
Python办公自动化:解锁高效工作流程,掌握文档处理的艺术
76 1
|
6天前
|
BI 开发者 数据格式
Python代码填充数据到word模板中
【4月更文挑战第16天】
|
6天前
05-python之函数-函数的定义/函数的参数/函数返回值/函数说明文档/函数的嵌套使用/函数变量的作用域
05-python之函数-函数的定义/函数的参数/函数返回值/函数说明文档/函数的嵌套使用/函数变量的作用域
|
10天前
|
开发者 索引 Python
实践:如何使用python在网页的表格里抓取信息
实践:如何使用python在网页的表格里抓取信息
|
1月前
|
Python
Python教程:如何向Word中添加表格
Microsoft Word是一种流行的文档处理软件,广泛用于创建各种类型的文档,包括报告、简历、手册等。Python提供了许多库来处理Microsoft Word文档,其中包括`python-docx`,它使我们能够轻松地创建、修改和操作Word文档。本文将介绍如何使用Python的`python-docx`库向Word文档中添加表格。
19 0
|
1月前
|
XML 存储 算法
使用Python的zipfile模块巧解Word批量生成问题
使用Python的zipfile模块巧解Word批量生成问题
20 0
|
1月前
|
安全 API 数据安全/隐私保护
使用Python操纵Word自动编写离职报告
使用Python操纵Word自动编写离职报告
24 0
|
1月前
|
SQL 数据可视化 数据库
Python中表格插件Tabulate的用法
Python中表格插件Tabulate的用法
49 0
|
1月前
|
Serverless 数据处理 索引
Python 处理 Excel 表格的 14 个常用操作
Python 处理 Excel 表格的 14 个常用操作
32 0