@zhangyu756897669
2017-09-30T14:28:54.000000Z
字数 1818
阅读 674
python官方文档
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.org和http://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对象。
我们来试一下python-docx模块。从http://nostarch.com/automatestuff/下载demo.docx并将文档保存到工作目录。
import docx
doc = docx.Document('demo.docx')#❶
len(doc.paragraphs)#❷
7
```
doc.paragraphs[0].text#❸
> 'Document Title'
doc.paragraphs[1].text#❹
> 'A plain paragraph with some bold and some italic'
```
len(doc.paragraphs[1].runs)#❺
4
```
doc.paragraphs[1].runs[0].text#❻
> 'A plain paragraph with some '
```
doc.paragraphs[1].runs[1].text#❼
'bold'
doc.paragraphs[1].runs[2].text#❽
' and some '
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文件中的文本,并像其他任何字符串值一样使用它。