[关闭]
@zhangyu756897669 2017-09-30T14:28:54.000000Z 字数 1818 阅读 674

用python处理World

python官方文档


world文档

Python可以使用python-docx模块创建和修改具有.docx文件扩展名的Word文档。您可以通过运行pip install python-docx来安装该模块。

注意

当使用pip来首先安装Python-Docx时,请确保安装python-docx,而不是docx。安装名称docx用于本书不包括的其他模块。但是,当您要导入python-docx模块时,您需要运行导入docx,而不是导入python-docx。

如果您没有Word,LibreOffice Writer和OpenOffice Writer都是Windows,OS X和Linux的免费替代应用程序,可用于打开.docx文件。您可以分别从https://www.libreoffice.orghttp://openoffice.org下载。 Python-Docx的完整文档可从https://python-docx.readthedocs.org/获取。虽然有一个版本的Word for OS X,本章将重点介绍Word for Windows。

.docx文件有很多结构。这个结构由Python-Docx中的三种不同的数据类型表示。在最高级别,Document对象表示整个文档。 Document对象包含文档中段落段落对象的列表。 (每当用户在输入Word文档时按ENTER或RETURN时,都会开始一个新的段落。)每个Paragraph对象都包含一个或多个Run对象的列表。图13-4中的单句段有四个运行。

Word文档中的文本不仅仅是一个字符串。它具有与之相关联的字体,大小,颜色和其他样式信息。 Word中的样式是这些属性的集合。运行对象是具有相同样式的文本的连续运行。每当文本样式更改时,都需要一个新的Run对象。

阅读Word文档

我们来试一下python-docx模块。从http://nostarch.com/automatestuff/下载demo.docx并将文档保存到工作目录。

  1. import docx
  2. doc = docx.Document('demo.docx')#❶
  3. len(doc.paragraphs)#❷

7

```
doc.paragraphs[0].text#❸

  1. > 'Document Title'

doc.paragraphs[1].text#❹

  1. > 'A plain paragraph with some bold and some italic'
  2. ```
  3. len(doc.paragraphs[1].runs)#❺

4

```
doc.paragraphs[1].runs[0].text#❻

  1. > 'A plain paragraph with some '
  2. ```
  3. doc.paragraphs[1].runs[1].text#❼

'bold'

  1. doc.paragraphs[1].runs[2].text#❽

' and some '

  1. doc.paragraphs[1].runs[3].text#➒

'italic'

在❶,我们在Python中打开一个.docx文件,调用docx.Document(),并传递文件名demo.docx。这将返回一个Document对象,该对象的paragraph属性是Paragraph对象的列表。当我们在doc.paragraphs上调用len()时,它返回7,这告诉我们本文档中有七个Paragraph对象。每个Paragraph对象都有一个文本属性,其中包含该段落中的文本的字符串(没有样式信息)。这里,第一个文本属性包含“DocumentTitle”❸,第二个文本属性包含“具有大胆和一些斜体”的简单段落。

每个Paragraph对象还具有一个运行属性,它是运行对象的列表。运行对象也有一个文本属性,只包含该特定运行中的文本。我们来看看第二个Paragraph对象中的文本属性,“一个带有粗体和一些斜体的简单段落”。在这个Paragraph对象上调用len()告诉我们有四个Run对象❺。第一个运行对象包含'带有一些'❻'的简单段落。然后,文本变为粗体,所以'bold'启动一个新的Run对象❼。文本返回到一个未折叠的样式,这将导致第三个Run对象'和一些'❽。最后,第四个和最后一个运行对象包含斜体样式的“斜体”。

使用Python-Docx,您的Python程序现在将能够读取.docx文件中的文本,并像其他任何字符串值一样使用它。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注