📅  最后修改于: 2020-08-22 03:11:33             🧑  作者: Mango
Microsoft Office套件中的MS Word实用程序是用于编写简单和复杂文本文档的最常用工具之一。尽管人们可以轻松地读写MS Word文档,但前提是您已安装Office软件,但通常您需要从另一个应用程序中的Word文档中读取文本。
例如,如果您正在使用Python 开发自然语言处理应用程序,以MS Word文件作为输入,则需要先使用Python读取MS Word文件,然后才能处理文本。同样,通常您需要将文本写到MS Word文档中作为输出,例如,它可以是动态生成的报告以供下载。
在本文中,您将看到如何在Python中读取和写入MS Word文件。
存在几个可用于在Python中读写MS Word文件的库。但是,由于其易用性,我们将使用python-docx模块。pip
在终端中执行以下命令以下载python-docx
模块,如下所示:
pip install python-docx
在本节中,您将看到如何通过python-docx
模块从MS Word文件读取文本。
创建一个新的MS Word文件并将其重命名为“ my_word_file.docx”。我将文件保存在“ E”目录的根目录中,尽管您可以将文件保存在任何位置。my_word_file.docx文件应具有以下内容:
要读取上述文件,请首先导入docx
模块,然后Document
从docx
模块创建该类的对象。将my_word_file.docx的路径传递给该类的构造函数Document
,如以下脚本所示:
import docx
doc = docx.Document("E:/my_word_file.docx")
本Document
类对象doc
现在可以用来读取my_word_file.docx的内容。
Document
使用文件路径创建该类的对象后,就可以通过paragraphs
属性访问文档中的所有段落。空行也被读取为段落Document
。让我们从my_word_file.docx中获取所有段落,然后显示文档中的段落总数:
all_paras = doc.paragraphs
len(all_paras)
输出:
10
现在,我们将迭代地打印my_word_file.docx文件中的所有段落:
for para in all_paras:
print(para.text)
print("-------")
输出:
-------
Introduction
-------
-------
Welcome to stackabuse.com
-------
The best site for learning Python and Other Programming Languages
-------
Learn to program and write code in the most efficient manner
-------
-------
Details
-------
-------
This website contains useful programming articles for Java, Python, Spring etc.
-------
输出显示Word文件中的所有段落。
我们甚至可以通过索引paragraphs
属性(如数组)来访问特定段落。让我们在文件中打印第五段:
single_para = doc.paragraphs[4]
print(single_para.text)
输出:
The best site for learning Python and Other Programming Languages
单词文档中的行是具有相似属性(如相似的字体大小,字体形状和字体样式)的连续单词序列。例如,如果您查看my_word_file.docx的第二行,其中包含文本“ Welcome to stackabuse.com”,此处的文本“ Welcome to”为纯字体,而文本“ stackabuse.com”为黑体。因此,文本“ Welcome to”被认为是一次运行,而黑体字“ stackabuse.com”被认为是另一次运行。
同样,“以最有效的方式编程和编写代码”和“以最有效的方式编写代码”在段落“以最有效的方式编写程序和代码”中被视为两个不同的运行。
要获取段落中的所有运行,可以使用对象run
属性的paragraph
属性doc
。
让我们阅读文本中第5段(第4个索引)的所有运行:
single_para = doc.paragraphs[4]
for run in single_para.runs:
print(run.text)
输出:
The best site for
learning Python
and Other
Programming Languages
以相同的方式,以下脚本将打印my_word_file.docx文件第6段中的所有运行:
second_para = doc.paragraphs[5]
for run in second_para.runs:
print(run.text)
输出:
Learn to program and write code in the
most efficient manner
在上一节中,您了解了如何使用该python-docx
模块在Python中读取MS Word文件。在本节中,您将看到如何通过python-docx
模块写入MS Word文件。
要编写MS Word文件,您必须Document
使用空的构造函数创建类的对象,或者不传递文件名。
mydoc = docx.Document()
要编写段落,可以使用类对象的add_paragraph()
方法Document
。添加段落后,您将需要save()
在Document
类对象上调用方法。您要向其写入段落的文件的路径作为参数传递给该save()
方法。如果该文件尚不存在,则将创建一个新文件,否则该段落将被添加到现有MS Word文件的末尾。
以下脚本将一个简单的段落写入名为“ my_writer_file.docx”的新创建的MS Word文件中。
mydoc.add_paragraph("This is first paragraph of a MS Word file.")
mydoc.save("E:/my_written_file.docx")
一旦执行了上面的脚本,您应该在save()
方法中指定的目录中看到一个新文件“ my_write_file.docx” 。在文件内部,您应该看到一个段落,上面写着“这是MS Word文件的第一段”。
让我们在my_writing_file.docx中添加另一个段落:
mydoc.add_paragraph("This is the second paragraph of a MS Word file.")
mydoc.save("E:/my_written_file.docx")
第二段将添加到my_write_file.docx中现有内容的末尾。
您也可以使用该python-docx
模块编写运行。要编写运行,首先必须为要添加运行的段落创建句柄。看下面的示例,看它是如何完成的:
third_para = mydoc.add_paragraph("This is the third paragraph.")
third_para.add_run(" this is a section at the end of third paragraph")
mydoc.save("E:/my_written_file.docx")
在上面的脚本中,我们使用类对象的add_paragraph()
方法编写了一个段落。该方法返回新添加的段落的句柄。要将运行添加到新段落,您需要在段落句柄上调用方法。运行的文本以字符串形式传递给方法。最后,您需要调用该方法来创建实际文件。Document
mydoc
add_paragraph()
add_run()
add_run()
save()
您还可以将标题添加到MS Word文件。为此,您需要调用该add_heading()
方法。该add_heading()
方法的第一个参数是标题的文本字符串,第二个参数是标题大小。标头大小从0开始,其中0是顶级标头。
以下脚本将级别0、1和2的三个标头添加到文件my_write_file.docx中:
mydoc.add_heading("This is level 1 heading", 0)
mydoc.add_heading("This is level 2 heading", 1)
mydoc.add_heading("This is level 3 heading", 2)
mydoc.save("E:/my_written_file.docx")
要将图像添加到MS Word文件,可以使用该add_picture()
方法。图像的路径作为参数传递给add_picture()
方法。您也可以使用docx.shared.Inches()
属性指定图像的宽度和高度。以下脚本将本地文件系统中的图像添加到my_write_file.docx Word文件中。图像的宽度和高度分别为5英寸和7英寸:
mydoc.add_picture("E:/eiffel-tower.jpg", width=docx.shared.Inches(5), height=docx.shared.Inches(7))
mydoc.save("E:/my_written_file.docx")
在执行本文的“使用Python-Docx模块编写MS Word文件”部分中的所有脚本之后,最终的my_write_file.docx文件应如下所示:
在输出中,您可以看到添加到MS Word文件的三个段落,以及三个标题和一个图像。
本文简要概述了如何使用该python-docx
模块读取和写入MS Word文件。本文介绍如何阅读段落并从MS Word文件中运行。最后,本文介绍了编写MS Word文件,向MS Word文件添加段落,运行,标题和图像的过程。