使用Python 2.7读取docx文件

1 投票
2 回答
4167 浏览
提问于 2025-04-18 14:23

我正在尝试用以下代码读取一个docx文件:

from docx import Document
doc = Document('test.docx')

但是当我尝试打印内容时,出现了这个:

<docx.api.Document object at 0x02952C70>

我该如何读取文件里的内容呢?

我听说docx格式最近有了变化,所以之前的问题和答案可能不再适用了。

2 个回答

4

这里有关于Document对象结构的信息:

docx.api的源代码

比如,如果你想获取“段落”这个属性:

doc = Document('test.docx')
paragraphs = doc.paragraphs()

希望这能帮到你。

补充:我在python-docx的GitHub仓库找到了这个代码片段,并稍微修改了一下:

document = docx.Document(filename)
docText = '\n\n'.join([
    paragraph.text.encode('utf-8') for paragraph in document.paragraphs
])
print docText

join()函数接收一个用UTF-8编码的字符串列表,这些字符串来自于段落属性返回的数组。所以结果看起来会像这样:

paragraph 1

paragraph 2

paragraph 3

看起来这个方法有效,但它不会打印表格、页眉或页脚。

补充:这个链接是关于python-docx所有文档的主索引:

python-docx 0.7.4文档

0

其实,你可以不使用 docx 模块来提取Word文件中的信息,使用Python也能做到。Etienne提供了一个解决方案(其实还有很多其他方法),这是一个非常简单的 docx 版本,可能会去掉你看到的那些十六进制数字。不过,就像SebasSBM的回答那样,这个方法对其他功能,比如表格等,可能就不太管用了。

如果这个方法还是不行,我建议你看看这些回答,也许其中有一个对你新的docx格式仍然适用。

撰写回答