跳至内容
Python

在 Python 中读取与编辑 PDF 和 Word 文档

本教程将带您读取 PDF 文档,并将多个 PDF 合并为一个文件。同时还将展示如何在 Python 中读取与编写 Word 文档。
Olivia Smith
已更新 · 8分钟 阅读

使用 AI 探索

ChatGPTClaudePerplexity

创建您的免费账户

实践并学习路径你的进步。

使用 Google 继续
继续操作即表示您接受我们的《使用条款》和《隐私政策》,并同意您的数据存储在美国。

PDF 文档

PDF 是“可移植文档格式”,可包含文本、图像、图表等,与纯文本文件不同。其文件扩展名为“.pdf”,由 Adobe 发明。这类文件不依赖任何平台,如软件、硬件或操作系统。

安装包的步骤:

  1. 您需要安装名为 "pypdf2" 的包,用于处理以“.pdf”为扩展名的文件。 install package 1

  2. 您可以看到 'pypdf2' 包已安装,如下所示。 install package 2

读取 PDF 文档并提取数据

您将只从 PDF 文件中提取文本,因为 PyPDF2 在提取富媒体内容方面有限制。徽标、图片等无法通过它提取——请先下载以下 PDF 文件以配合本教程。
下载 PDF 文件

import pdf

上述代码中的 'import' 语句用于引入 PyPDF2 模块。您需要使用 'open('pdfFileName' , 'openingMode')',其中 'pdfFilename' 为 'test.pdf','openingMode' 为 'rb',即以二进制只读方式打开。

open pdf

PyPDF2 提供 'PdfFileReader' 方法,它接收新创建的对象 'pdfFileObject'。现在您可以访问 'pdfFileObject' 的 'numPages' 属性,以获取页面总数。

total number of pages 上述输出为 1。因为您可以看到该 PDF 文件只有一页。

first page 您可以在 pdfReaderObject 中使用 'getPage(0)' 方法获取第一页。然后将结果存储在 'firstPageObject' 中,再使用 'extractText()' 方法打印该页中的所有文本。

all text 上述代码返回了 PDF 文件中的所有文本。但终端中不会显示图像,pyPDF2 无法获取图像。

将多个 PDF 合并为一个 PDF

您将把两个不同的 PDF 文件合并为一个。旧的 PDF 文件是之前使用的那个,而新的 PDF 文件可通过以下链接下载:
新 PDF 文件。

new pdf

您将从 PyPDF2 包中导入 PdfFileMerger 模块,用于合并 PDF 文件。指定 'path' 表示文件所在文件夹的路径。同时,将待合并的 PDF 文件以列表形式放入 'pdf_files'。

merger object 您可以看到使用 'PdfFileMerger' 创建了合并器对象。对列表中的每个文件进行循环,通过向 'append' 方法传入路径和文件来完成合并。最后,使用 'merger.write()' 生成最终输出,得到包含合并内容的新 PDF 文件名。

merged pdf 上图显示了 'merged.pdf',其内容由 'test.pdf' 和 'test-1.pdf' 合并而成。

Word 文档

Word 文档的文件名以“.docx”为扩展名。与纯文本文件不同,这类文档不仅包含文本,还属于富文本,包含文档的不同结构及其关联的大小、对齐、颜色、图片、字体等。

要处理 Word 文档,您需要相关应用。Windows 和 Mac 操作系统上常用的是 Microsoft Word,但它需要付费订阅。不过,也有免费的替代方案,例如 Linux 上预装的 "LibreOffice"。这些应用也可用于 Windows 和 Mac 操作系统。本教程将在 Windows 操作系统中使用 Microsoft Word。

安装包的步骤

  1. 您需要安装名为 "python-docx" 的包,用于处理以“.docx”为扩展名的 Word 文档。 python-docx package

  2. 您可以看到 'python-docx' 包已安装,如下所示。 installed package

您可以在 Python 提供的交互式 Shell 中跟着编写代码,但更推荐使用文本编辑器。因此,本教程的编码部分使用 Sublime Text。

编写 Word 文档

document module imported

如上所示,第一行从 'docx' 包中导入了 'document' 模块。第二行代码通过 Document 对象创建了一个新的 Word 文档。使用 'document.save()' 将文件保存为 'first.docx'。

添加标题

add heading

上述代码中的 'Document()' 打开一个新文件,'document.save('addHeader.docx')' 用于创建一个新编辑的 docx 文件。您可以通过 'add_heading('text,' level=number)' 方法添加标题,其中传入标题文本,并设置标题级别,范围为 0 到 4。

heading levels

上述代码将输出新创建的 'addedHeader.docx' 文件,其中 level 0 会生成带有下划横线的标题,而 level 1 为主标题。类似地,其余级别为子标题,字体大小依次递减。

添加段落

add a paragraph

上述代码中的 'Document()' 会打开一个新的文档文件,'document.save('addParagraph.docx')' 用于创建一个新编辑的 docx 文件。您可以通过 'add_paragraph('text,' style='required_style')' 方法添加段落,该方法接收文本,同时 'style' 为可选参数,可使用 'List Number' 和 'List Bullet' 等样式。

newly created file

上述代码将输出新创建的 'addedParagraph.docx' 文件,第一行是一个简单段落。随后是一个标题,下面包含一个有序列表,含有编号 1 和 2 的条目。再下面是另一个标题,其下是一个包含两项内容的无序项目符号列表。

添加图片

add a picture

上述代码中的 'Document()' 会创建一个新的文档文件,'document.save('addPicture.docx')' 用于创建一个新编辑的 docx 文件。您可以使用 'add_picture()' 添加图片,第一个参数 'cat-1.jpeg' 为猫的图片路径。宽度和高度为可选参数,默认是 '72 dp',但在此我们使用 'Inches'。

added picture

上述代码将输出新创建的 'addedPicture.docx' 文件,其中包含一张猫的图片,宽高均为 1.25 英寸。

读取 Word 文档

现在您将通过 Python 读取一个示例 Word 文档,可在此处获取:
下载示例。

reading word document

代码第一行从 'docx' 模块中导入 Document,用于传入所需的文档文件并创建对象。'obtainText' 是一个函数,它接收文件 'fullText.docx'。通过 'document.paragraphs' 访问每个段落并逐一循环,使用 'append' 方法插入到一个空列表中。最后,函数返回以换行结尾的段落列表。

plain text

上述输出为不带任何样式、颜色等的纯文本,并非富文本文档。

恭喜

恭喜,您已完成本教程的学习。

如果您想进一步学习如何在 Python 中导入数据,请试试 DataCamp 的 Introduction to Importing Data in Python 课程。

查看我们的 Python 数据结构教程。

您还可以参考以下资源,深入了解特定主题。

  1. Python Docx 文档
  2. PyPDF2 文档

参考:
Automate Boring Stuff With Python: Working with Word Documents

主题
Python

进一步了解 Python

课程

Python 数据导入入门

3 小时
342.4K
学习如何将来自 Excel、SQL、SAS 以及网页等各种来源的数据导入 Python。
查看详情开始课程

创建您的免费账户

实践并学习路径你的进步。

使用 Google 继续
继续操作即表示您接受我们的《使用条款》和《隐私政策》,并同意您的数据存储在美国。
查看更多