使用 python-docx 和 difflib 对比 Word 文档
使用 python-docx 和 difflib 对比 Word 文档
以下是一个 Python 脚本示例,用于比较两个 Word 文档的文本内容差异:
from docx import Document
import difflibdef read_word_file(file_path):doc = Document(file_path)full_text = []for para in doc.paragraphs:full_text.append(para.text)return '\n'.join(full_text)def compare_word_files(file1, file2):text1 = read_word_file(file1)text2 = read_word_file(file2)d = difflib.Differ()diff = list(d.compare(text1.splitlines(), text2.splitlines()))print('\n'.join(diff))# 使用示例
compare_word_files('document1.docx', 'document2.docx')
安装依赖库
运行前需要安装 python-docx 和 difflib(后者是 Python 标准库):
pip install python-docx
输出结果说明
- 以 '-' 开头的行表示第一个文档独有的内容
- 以 '+' 开头的行表示第二个文档独有的内容
- 以空格开头的行表示两个文档共有的内容
处理复杂格式差异
如果需要比较格式差异(如字体、颜色等),可以使用更专业的库如 python-docx-compare:
from docxcompose.composer import Composer
from docx import Documentdoc1 = Document("document1.docx")
doc2 = Document("document2.docx")composer = Composer(doc1)
composer.append(doc2)
composer.save("compared.docx")
可视化差异输出
对于更直观的差异展示,可以生成 HTML 格式的对比结果:
diff_html = difflib.HtmlDiff().make_file(text1.splitlines(), text2.splitlines(),fromdesc='Document 1',todesc='Document 2'
)
with open('diff.html', 'w') as f:f.write(diff_html)