【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.xml。comment() 支持可选参数 date(默认当前系统时间)。

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

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

相关推荐
我是唐青枫14 分钟前
Kotlin Delegation 委托详解
开发语言·kotlin
qq_4069810319 分钟前
共享变量一 关于extern与const
开发语言·c++
benchmark_cc24 分钟前
用 Python 拉 A 股全市场实时快照:Notebook 请求、结果校验与易错点
python·数据分析·pandas·量化交易·股票数据·quantdash
伞伞悦读36 分钟前
【第70期】Adam二阶矩不是方差:偏差校正、动量与AdamW完整实验
python
FRing031 小时前
JavaScript入门到精通三十二(深拷贝、浅拷贝、递归函数)
开发语言·前端·javascript
外收内放1 小时前
Python基础语法练习题(73)
java·前端·python
锋行天下1 小时前
Langgraph HITL 中断运行,用户输入后输出打字效果
人工智能·python
时早玖沐2 小时前
给 AstrBot 写一个天气推送插件:12 次提交、6 个坑
python·开源·ai编程
触底反弹2 小时前
🚀 FastAPI 五大重难点深度剖析:从 500 报错到彻底搞懂 Depends、Pydantic 与 SQLAlchemy
python·fastapi
cpolar技术支持2 小时前
网关加 gzip,同时开启 chunked,下载回来的包解不开:把两层编码的解压顺序与长度核对做成只读页
python·http·网络编程·socket·内网穿透