使用 difflib 比对 Word

本文介绍了如何使用Python的difflib模块来比对Word文档内容,不包含Word表格数据。方法一通过代码高亮差异部分,方法二则展示两份源文本的并列比对。
  • 注意,此方法比对,不包括Word表格中数据

方法一:

代码如下:

import docx
import codecs
from difflib import HtmlDiff

file1 = docx.Document(r'\\Mac\Home\Desktop\project\天华\test1.docx')
file2 = docx.Document(r'\\Mac\Home\Desktop\project\天华\test2.docx')

para1 = ''
para2 = ''

for para in file1.paragraphs:
	para1 = para1 + para.text + '\n'
	print(para1)
for para in file2.paragraphs:
	para2 = para2 + para.text + '\n'
	print(para2)
delta_html = HtmlDiff().make_file(para1.splitlines(), para2.splitlines())
with codecs.open(r'\\Mac\Home\Desktop\project\天华\diff.html', 'w', encoding='utf-8') as f:
	f.write(delta_html)

最终生成的HTML文件,用浏览器打开如下:
d900acc3c8d146809a2ec029cdee5535_.png

fe9d7d5a1e6c40529826fd87f7cf38e7_.png

如上图所示,差异的部分会黄色背景标出。
且两份文本并列显示,如下图:
97307134899447a389db6938095c99d1_.png

方法二:

代码如下:

import docx
import difflib
import sys

file1 = docx.Document(r'\\Mac\Home\Desktop\project\天华\test3.docx')
file2 = docx.Document(r'\\Mac\Home\Desktop\project\天华\test4.docx')

para1 = ''
para2 = ''

for para in file1.paragraphs:
	para1 = para1 + para.text + '\n'
	# print(para1)
for para in file2.paragraphs:
	para2 = para2 + para.text + '\n'
	# print(para2)

d=difflib.Differ()
diff = difflib.ndiff(para1.splitlines(),para2.splitlines())
sys.stdout.writelines(diff)

两份源文本如下图:
e4c9b234cec94e5c9753d95231e16418_.png

比对结果如下:

1184a29fc9b048d89f4fba989520c93e_.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值