【Python】docxnote:优雅的 Word 批注

docxnote 是一个轻量级的 DOCX 批注 库,只依赖 lxml。它直接处理 WordprocessingML,把 docx 当成 ZIP + XML,对外提供 按段落字符串 操作的 API------不暴露 Word 里的 Run,批注用字符区间 start / end 标定。

如果你做过合同/标书/论文的批量审阅,多半踩过这样的坑:用通用 DOCX 库时要自己拆 Run 、对 XML 锚点、维护 comments.xml 和关系------样板代码长、边界情况多,一不留神批注就错位或损坏原文。

安装:

bash 复制代码
pip install docxnote
python 复制代码
from docxnote import DocxDocument, Paragraph, Table

with open("document.docx", "rb") as f:
    doc = DocxDocument.parse(f.read())

for block in doc.blocks():
    if isinstance(block, Paragraph) and block.text:
        block.comment("请检查表述", end=5, author="reviewer")
    elif isinstance(block, Table):
        rows, cols = block.shape()
        for r in range(rows):
            for c in range(cols):
                for inner in block[r, c].blocks():
                    if isinstance(inner, Paragraph) and inner.text:
                        inner.comment("需复核", end=3, author="reviewer")

with open("output.docx", "wb") as f:
    f.write(doc.render())

需要保留文件里已有批注时,使用 DocxDocument.parse(..., keep_comments=True)。批注在调用 render() 时写入 comments.xmlcomment() 支持可选参数 date(默认当前系统时间)。

同一 DocxDocument 可在多线程里使用;多个文档各 parse 一份再并行即可。

更多 API 说明见仓库 README(英文)与 README_zh-CN(中文)。

相关推荐
测试员周周15 小时前
【Appium 系列】第16节-WebView-H5上下文切换 — 混合应用的自动化难点
运维·开发语言·人工智能·功能测试·appium·自动化·测试用例
测试199815 小时前
软件测试 - 单元测试总结
自动化测试·软件测试·python·测试工具·职场和发展·单元测试·测试用例
曲幽17 小时前
我用了FastApiAdmin后,连夜把踩过的坑都整理出来了
redis·python·postgresql·vue3·fastapi·web·sqlalchemy·admin·fastapiadmin
杜子不疼.17 小时前
【C++ AI 大模型接入 SDK】 - DeepSeek 模型接入(上)
开发语言·c++·chatgpt
加号318 小时前
【C#】 串口通信技术深度解析及实现
开发语言·c#
sycmancia18 小时前
Qt——编辑交互功能的实现
开发语言·qt
石山代码19 小时前
C++ 内存分区 堆区
java·开发语言·c++
前端若水19 小时前
会话管理:创建、切换、删除对话历史
前端·人工智能·python·react.js
无风听海19 小时前
C# 隐式转换深度解析
java·开发语言·c#
涛声依旧-底层原理研究所20 小时前
残差连接与层归一化通俗易懂的详解
人工智能·python·神经网络·transformer