使用python-docx读取docx仅输出换行,是否为库支持不足导致?
不是,python-docx读取文本内容完全不受字号大小影响,只要是标准的正文段落内容,不管字号设置为多少,都会被正常解析读取。
你遇到的读取结果只有换行的情况,大概率是以下几种原因导致的:
- 文档内容全部放在文本框、自选形状、页眉/页脚等非正文区域:python-docx的
paragraphs属性默认只会读取文档正文层级的段落,文本框这类嵌入元素里的内容不会被纳入这个列表,自然读不到对应文本。 - 文件路径填写错误:你代码里的路径是占位符
...,如果实际运行时传入的路径指向了另一个空白docx文件,自然只会读取到空内容。 - docx文件结构不标准:用WPS、Mac Pages等非微软Office软件导出的部分docx文件会存在非标准的XML结构,python-docx解析时无法识别到有效段落,也会出现读取不到内容的情况。
你可以先运行下面的代码确认正文段落数量,先定位问题来源:
import docx template = docx.Document("替换为你的实际文件路径.docx") # 打印正文段落总数 print("正文段落数:", len(template.paragraphs))
如果输出的段落数远小于你实际的内容行数,就说明内容不在正文区域,多数情况是放在了文本框里,可以用下面的代码同时读取正文和文本框内容:
import docx doc = docx.Document("替换为你的实际文件路径.docx") all_content = [] # 读取正文段落 for para in doc.paragraphs: all_content.append(para.text) # 读取所有文本框中的内容 for shape in doc.inline_shapes: if shape.has_text_frame: for para in shape.text_frame.paragraphs: all_content.append(para.text) print("\n".join(all_content))
内容的提问来源于stack exchange,提问作者Alan Bagel
相关产品推荐
相关产品推荐

