利用python批量处理Word文件——正文、标题
前面写了如何处理word中的表格:利用python批量处理Word文件——表格 ,其实我觉得word正文应该很少用到批处理,不过万一有朋友需要呢,我们要处理的文件内容千奇百怪,但我觉得难点其实是如何对我们想处理的内容进行读写,所以这篇博客的主要内容就是word文件的读写。我把word文件中的内容分为三类:一是表格;二是图片;三是其它内容。表格和图片的处理我在另外的博客中有详细说明,这里主要谈谈word正文的读写。
在docx中,Word内容的(除表格、图片)的基本组成是段落,因此word的所有内容都存储在paragraphs中,paragraph有两个属性:一是text,二是style。text存储段落的内容,style判断段落的种类。
1.读取Word内容
1.1读取Word中的表格
1.2读取Word中的图片
1.3读取Word正文
from docx import Document
doc=Document("./a.docx")
for p in doc.paragraphs:
print(p.text)
通过遍历paragraphs就可以获得word中全部内容,有时候我们并不需要读取Word中的所有内容,我们可能只想要某些特殊的内容,比如标题,比如列表,那么docx可否实现呢,答案是肯定的。
1.3.1 读取Word中的标题
- 一级标题
for p in doc.paragraphs:
if p.style.name=='Heading 1':
print(p.text)
- 二级标题
for p in doc.paragraphs:
if p.style.name=='Heading 2':
print(p.text)
- 所有标题
import re
for p in doc.paragraphs:
if re.match("^Heading \d+$",p.style.name):
print(p.text)
1.3.2 读取正文
for p in doc.paragraphs:
if p.style.name=='Normal':
print(p.text)
1.3.3 其它内容
从前面可以看出,如果知道不同内容的style.name,那么要读这些内容是极其方便的,这些style.name可以通过以下方式得到:
from docx.enum.style import WD_STYLE_TYPE
for i in s:
if i.type==WD_STYLE_TYPE.PARAGRAPH:
print(i.name)
2.Word写入数据
2.1 标题
写入标题有两种方法
doc.add_heading("heading 1",level=1)
or
doc.add_paragraph("heading 1",style='Heading 1')
2.2 正文
doc.add_paragraph("正文")
2.3 分页符
doc.add_page_break()
2.5 其它
利用add_paragraph可以插入几何所有内容,只指定对应的style即可。
至于写入数据时的格式控制说起来就比较复杂了,我就不详述了,如果大家有需要,可以看下面文档:
网上资料很多,大家有更多需求就自己去找吧,或着留言。