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

文章目录

对比表格数据

  • 删除行
  • 新增行
  • 更新行
python 复制代码
# __author__ = "laufing"
from docx import Document


doc = 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)
相关推荐
CaracalTiger1 小时前
什么是Clawdbot?Clawdbot下载、安装、配置教程(最新版Moltbot)
python·编辑器·aigc·idea·ai编程·intellij idea·agi
WJX_KOI5 小时前
Open Notebook 一个开源的结合AI的记笔记软件
python
0思必得06 小时前
[Web自动化] 反爬虫
前端·爬虫·python·selenium·自动化
2301_822382766 小时前
Python上下文管理器(with语句)的原理与实践
jvm·数据库·python
喵手7 小时前
Python爬虫实战:从零搭建字体库爬虫 - requests+lxml 实战采集字体网字体信息数据(附 CSV 导出)!
爬虫·python·爬虫实战·零基础python爬虫教学·csv导出·采集字体库数据·字体库字体信息采集
2301_790300967 小时前
Python深度学习入门:TensorFlow 2.0/Keras实战
jvm·数据库·python
程序员敲代码吗9 小时前
用Python生成艺术:分形与算法绘图
jvm·数据库·python
Yyyyy123jsjs9 小时前
如何通过免费的外汇API轻松获取实时汇率数据
开发语言·python
喵手9 小时前
Python爬虫实战:GovDataMiner —— 开放数据门户数据集元数据采集器(附 CSV 导出)!
爬虫·python·爬虫实战·python爬虫工程化实战·零基础python爬虫教学·open data·开放数据门户数据集列表