当前位置: 首页 > news >正文

python-docx -- 对比两个表格的行数据

文章目录

  • 对比表格数据

对比表格数据

  • 删除行
  • 新增行
  • 更新行
# __author__ = "laufing"
from docx import Documentdoc = Document("table.docx")table_data = []
for table in doc.tables:for row in table.rows:table_data.append([cell.text for cell in row.cells])print("table data:", table_data)data1 = [ # m['省份', '城市', '地区', '小区'],['河南省', '郑州市', '东区', '碧桂园'],['河北省', '天津市', '四环区', '瑞丰锦尚'],['河北省', '未知市', '未知区', '0'],['山西省', '晋城市', '长垣县', '0'],
]data2 = [ # n['省份', '城市', '地区', '小区'],['河南省', '郑州市', '东区', '碧桂园'],['河北省', '天津市', '四环区', '瑞丰锦尚'],# ['河北省', '未知市', '未知区', '0'],['山西省', '晋城市', '长垣县', '0'],['山西省', '未知市', '未知区', '0']
]
m = len(data1)
n = len(data2)
from difflib import SequenceMatcher
import numpy as np# old -> new
matrix = np.zeros((m, n))
for i in range(m):seq1 = "".join(data1[i])for j in range(n):matrix[i][j] = SequenceMatcher(None, seq1, "".join(data2[j])).ratio()# 表格1中的行 与 表格2中行的 最大相似度    达到1的未变化  (行文本之间有相似时,准确率下降)
data1_max_proba = np.max(matrix, axis=1)# data1中删除的行   相似度 < 0.82   0.82 - 0.99 更新    >= 0.99 未变化
arr = np.argwhere(data1_max_proba < 0.82)
print("删除的行:", arr)# 与基础数据 索引对应
data11 = [ # m['省份', '城市', '地区', '小区'],['河南省', '郑州市', '东区', '碧桂园'],['河北省', '天津市', '四环区', '瑞丰锦尚'],['', '未知市', '未知区', '0'], # 索引为3 删除['山西省', '未知市', '未知区', '0']
]data22 = [ # n['省份', '城市', '地区', '小区'],['河南省', '郑州市', '东区', '碧桂园'],['河北省', '天津市', '四环区', '瑞丰锦尚'],# ['河北省', '未知市', '未知区', '0'],['山西省', '晋城市', '长垣县', '0'],['', '未知市', '未知区', '0']
]# new -> old
matrix2 = np.zeros((n, m))
for i in range(n):seq2 = "".join(data2[i])for j in range(m):matrix2[i][j] = SequenceMatcher(None, seq2, "".join(data1[j])).ratio()arr2 = np.max(matrix2, axis=1)
# 获取增加的行  相似度 < 0.82
arr2 = np.argwhere(arr2 < 0.82)
print("增加的行:", arr2)

http://www.mrgr.cn/news/56497.html

相关文章:

  • 建库建表练习
  • 【华为路由】OSPF多区域配置
  • Java设计模式:工厂模式详解
  • Python爬虫:urllib_post请求百度翻译(06)
  • 传统企业营销新起点:百科词条构建基础策略!
  • C/C++中const用法
  • JavaScript字符串的常用方法有哪些?
  • 第五部分 数组和String类
  • spring-boot(4)
  • 计算机组成原理一句话
  • 云原生后端开发之道
  • 【华为路由】OSPF多区域配置
  • c++日常积累
  • Recall/Coarse Ranking/Fine Ranking
  • Kafka之消费者组与消费者
  • uniapp项目结构基本了解
  • 基于图像拼接开题报告
  • Springboot启动过程详解
  • MySQL实现主从同步
  • jmeter学习(6)逻辑控制器
  • U盘数据丢失不用慌,这4个工具可以帮你恢复。
  • sqlserver小练习
  • 基于Multisim三极管B放大系数放大倍数测量电路设计(含仿真和报告)
  • 手机功耗技术领域
  • Java 实现协同过滤算法推荐算法
  • ecmascript标准