在WORD文档中添加节要使用“页面布局”菜单里“分隔符”按钮分节符功能,见下图;而在python-docx包中则要使用add_section()函数添加节,使用start_type来设定或者更改分节符。笔者将从节的添加、节的定位和分节符设置三个部分进行讲述python-docx包对节的操作。
WORD软件添加分节符

01新建文档时默认的节

节在docx文档中存储在document.sections中,那么新建docx文档时,python-docx向文档中默认添加了几个节,节中有几个段落?笔者将新建一个文档并打印节的数量和段落对数量,代码如下:
document = Document() # 新建文档print('默认节的数量:', len(document.sections)) # 打印默认节对数量print('默认段落的数量:', len(document.paragraphs)) # 打印默认段落数量document.save('test.docx') # 保存文档打印默认文档中节和段落对数量结果如下:
新建文档默认节的数量
新建文档的效果如下图
新建文档时的效果图
在新建文档时,python-docx向文档里添加了一个节,节内不含段落。虽然显示了一个段落结束标志符,也不是一个有效的段落。如果想添加内容,必须新建段落。另外在第1个节中不显示分节符符号。

02添加节

python-docx包的add_section()方法可以添加一个节。方法,一般形式为document.add_section(start_type=2),可以想文档末尾添加一个节。参数start_type可以设置分节符的类型。参数可以省略,也可以设置为None,这两种情况含义是一样的,都表示分节符是新的分节符。在test.docx中添加2个节,代码如下:
document.add_section() # 添加第2个节document.add_section() # 添加第3个节print('节的数量:', len(document.sections)) # 打印节对数量print('段落的数量:', len(document.paragraphs)) # 打印段落数量添加2个节运行结果如下图:
添加2个节后的运行结果
文档效果图
添加2个节后的效果图
在添加分节符的时候,也添加了段落。现在再分别为这2个段落里添加文字,代码如下:
document = Document('test.docx')document.paragraphs[0].add_run('第1个段落')document.paragraphs[1].add_run('第2个段落')document.save('test1.docx')添加段落内容后效果图如下:
在前2个段落里添加内容效果图
在每个分节符前面都添加一个段落。虽然分节符前面没有显示段落标志符,也是有效的段落。那么可以使用Paragraph.insert_paragraph_before()方法向节中添加内容,段落的更多介绍可以参考文章Python-docx添加段落

03节对定位

docx文档中使用document.sections可以获得所有节的对象列表。通过节序号来获得每个节对象。代码如下:
section = document.sections[1] # 获取第2个节节的序号从0开始,即序号1表示第2个节。

04分节符的设置

节是通过为start_type赋值来更改分节符的类型,即在添加节时设置document.add_section(start_type=2)方法中start_type参数的值,在更改分节符类型时更改section.start_type属性的值。在python-docx包中分节符的类型定义在docx.enum.section.WD_SECTION_START中,含义和对应的值如下:
WD_SECTION_START.CONTINUOUS:连续分隔符,值为1。WD_SECTION_START.NEW_COLUMN:新列分隔符,值为2。WD_SECTION_START.NEW_PAGE:新页的分隔符,值为3。WD_SECTION_START.EVEN_PAGE:偶数页的分隔符,值为1。WD_SECTION_START.ODD_PAGE:奇数页的分隔符,值为5。在为start_type赋值时,赋值和采用WD_SECTION_START的枚举是相同的,即start_type=2与start_type= WD_SECTION_START.NEW_PAGE是等效的。对text1.docx中的第2个节的分节符更改为奇数页的分隔符,代码如下:
document = Document('test1.docx')section = document.sections[1] # 获取第2个节,用于更改分节符print('更改前分节符类型:', section.start_type) # 更改分节符之前section.start_type = WD_SECTION_START.ODD_PAGE # 设置奇数分节符print('更改后分节符类型:', section.start_type) # 更改分节符之后document.save('test2.docx')代码运行结果如下图:
更改分节符的运行结果图
生成的文档效果入下图
更改分节符后的文档效果图
笔者将python-docx包中的节的添加、定位和分节符设置等内容进行总结,制作了思维导图如下,希望为使用python-docx包对节读写时提供参考。
python-docx包中的节的添加等
举报/反馈

小梁学编程

947获赞 185粉丝
专注于科学计算,GIS,编程,软件开发。
关注
0
0
收藏
分享