
3.3 处理Word文件
使用Python处理Word文件时,可以使用Python-docx库和Win32com库来完成。
3.3.1 Python-docx库
由于 Win32com 库只对 Windows 平台有效,而 Python-docx 库不依赖操作系统[5],具有跨平台特性,因此,这里主要介绍使用Python-docx库来处理Word文件。
如果你安装的是Anaconda3,在Windows的命令行窗口通过输入“pip list”会发现系统已经安装好了Python-docx库。这也是使用Anaconda安装包的好处之一。
但请注意,在写代码时,导入的名字是“docx”而不是“Python-docx”:

当然,在导入库或模块前通常要查询一下该模块是否已经安装,如果没有安装,就请按照第1.3节介绍的安装库的方法进行安装。
可以在Windows命令行窗口通过输入“pip list”命令来查看已经安装的库。

3.3.2 利用Python-docx库读Word文件
Python利用Python-docx库来处理Word文件,它把Word文件中的段落、文本、字体等都看作对象来进行处理。因此,需要先了解几个相关概念。
用三种不同的类型来表示.docx 文件的结构,Document 对象表示整个文件,它包含一个 Paragraph 对象的列表;Paragraph 对象表示文件中的段落,以回车键为准,文件中的所有段落形成一个Paragraph对象构成的列表;每个Paragraph对象包含一个Run对象的列表,即在一个段落中,根据字体的不同形成一个 Run 对象的列表。.docx 文件里面不光包含了文本字符串,还有字号、字体、颜色等属性,它们都包含在 style(样式)中。一个Run对象就是style相同的一段文本,新建一个Run就有新的style。

通过以上程序打开文件,但此时无法查看文件的具体内容。利用 type()测试文件对象的类型,可发现它的确是一个Document对象。

可以通过Paragraph对象获得文件的段落信息,Paragraph对象是一个列表。

要获得每个段落里的具体内容,需要使用Paragraph对象的text属性。

【例 3-18】 假设文件位于“D:\PythonTest\word_document\test.docx”,编程显示文件每个段落的内容。要求在每个段落内容显示前输出是第几个段落,以及此段落共计多少个字符。

【例3-19】 理解Run对象[6]。

请大家事先准备好可用于测试的.docx 文件,例如,准备好如下所示内容的测试文件“Run_test_1.docx”,然后运行以上程序。通过观察输出的结果,可发现每个 Run 对象其实就是样式相同的一段文本,而每个Run对象都将执行一次循环,输出对应的文本内容、字体样式、字号大小和字体颜色,默认字体颜色是“None”。

一个Run对象就是style相同的一段文本[6],如下所示:

3.3.3 利用Python-docx库创建Word文件
【例 3-20】 创建 Word 文件,用 input()函数输入要创建的段落数,并设置段落文字的字体、颜色、字号等。

运行程序后,请自行打开文件查看程序运行的结果。
特别说明:
(1)如果要创建的Word文件不存在,则新建一个Word文件。
(2)如果要创建的 Word 文件已经存在,请在运行程序之前,关闭要创建的 Word文件,否则会报错!
更多内容大家可以查看帮助,也可以用dir和help查看对象的方法属性和帮助信息。