Python-docx获取段落runs解包报错too many values to unpack解决
问题解答
首先明确python-docx的底层规则:单个Paragraph对象的runs属性固定返回一维列表,每个元素为对应格式片段的Run对象,不可能直接返回嵌套的两层列表。
你遇到的所有异常现象本质都是代码逻辑重复执行了两次操作:
- 打印
doc.paragraphs[i].runs得到两个列表,是两次打印分别输出了两个不同段落的runs属性 - 取
runs[0]得到两个结果,是两次取值分别取了两个不同段落runs的第一个元素 - 解包报错是因为单个段落的runs列表长度远大于2,自然无法用两个变量完成解包
你后续定位到的if判断条件错误刚好对应这个根因:你的判断条件同时匹配到了两个符合要求的段落,导致对应逻辑执行了两次。
如果你的需求是只取第一个匹配到的段落的完整runs列表,修改逻辑即可:匹配到第一个符合条件的段落时,直接记录对应的runs列表,之后通过break终止遍历即可,无需继续匹配后续段落。
内容的提问来源于stack exchange,提问作者Aster Lin
相关产品推荐
相关产品推荐

