运用好Python处理文档的小技巧,让你成为女神心中superstar!

今天小编给大家带来了一篇,主要运用Python_docx模块处理word文档的基本技巧来介绍,其中最主要的是如何对图片进行提取和写入。



python已有几个模块可处理word文档、excel表格、以及ppt演示文稿。首先,汇总列出各模块对不同版本文件的处理能力:

docx模块:可读取、写入.docx文档(不支持.doc文档!!!)

xlrd模块:可读取.xls、.xlsx表格

xlwt模块:可写入.xls表格(不可写入.xlsx文件!!!)

pptx模块:可读取、写入.ppt、.pptx(.ppt演示文稿,只能读取pptx模块自身输出的,对其他方式生成的不支持!!!)

首先我们来介绍docx模块中如何描述一篇word文档。

word文档的结构描述不如excel表格那么直观。word文档整体上有几类对象组成:

(1)节Section:表示word文档中页面布局一样的部分内容。

(2)段落Paragraph:word文档的基本组成单元就是段落。文字、图形都位于段落之中。

(3)块Run:每个段落之中的内容可以具有不同的样式,这些具有相同样式的基本单元可称之为块。一个段落可由多个块组成(各块之间允许设置不同的样式,但也可保持相同的样式)。

(4)内联图形Inline_shape:以嵌入方式置入word文档中的图形称之为内联图形。除此之外,还有其他布局方式的图形,可在块中找到,但其并不在内联图形集合中。

(5)表格Table:嵌入word文档的表格。表格由行、列、单元格组成。单元格中的内容可以包含段落、图形、表格等。注意,表格不在段落之中。

(6)样式Style:用来确定word文档内置对象格式的各种样式,包括段落样式、表格样式、字符样式、列表样式(包括有序列表和无序列表)。

以上1~3项、6项是一个word文档必备的元素。

下面介绍docx模块具体如何操作一个word文档。

打开或新建文档:

doc = docx.Document(‘1.docx‘) #打开word文档1.docx,如果不指定文件路径,则新建文档

节操作:

新建的文档已包含一个节对象。节对象本质上是一个分节符(除第一节外),分节符本身构成一个独立段落,包括在doc.paragraphs中。

doc.sections #返回文档中节集合,其组成元素为节对象,可以通过索引获取

doc.add_section(start_type=2) #增加一个新节,start_type为分节符的类型

doc.sections[n] #返回索引为n的节对象。可以通过节对象的属性访问或设置节的格式,其主要属性包括:

  • 分节符类型:‘start_type‘,0表示连续分节符,1表示节的结尾符号,2表示下一页分节符,3表示偶数页分节符,4表示奇数页分节符页面方向: ‘orientation‘,1表示横向,0表示纵向页面尺寸:‘page_height‘(页高), ‘page_width‘(叶宽)。距离属性都可通过尺寸对象docx.shared.xx()进行设置(详见下文公用对象)边距:‘bottom_margin‘(底部页边距), ‘footer_distance‘(页脚到底部间距), ‘gutter‘(装订线到叶边距离), ‘header_distance‘(顶部页边距), ‘left_margin‘(左侧页边距), ‘right_margin‘(右侧页边距), ‘top_margin‘(顶部页边距)。距离属性都可通过尺寸对象docx.shared.xx()进行设置(详见下文公用对象)

段落操作:

doc.paragraphs #返回文档中段落集合,其组成元素为段落对象,可以通过索引获取

doc.paragraphs[n] #返回索引为n的段落对象

doc.add_paragraph(text=‘‘, style=None) #在文档末尾增加一个新的段落,text为段落文本,style为段落样式(如缺省为None,则继承文档默认段落样式)

doc.add_heading(text=‘‘, level=1) #在文档末尾增加标题段落。level表示标题级别

doc.add_page_break() #在文档末尾增加新段落,该段落仅包含分页符

doc.paragraphs[n].insert_paragraph_before(text=None, style=None) #在索引为n的段落前增加一个段落

doc.paragraphs[n].text #返回或设置段落的文本内容

doc.paragraphs[n].paragraph_format #返回索引为n的段落的段落格式。可以通过段落格式(而不是段落对象本身,与节对象不同)的属性访问或设置段落的格式,其主要属性包括:

  • 段落对齐方式:‘alignment‘,0为左对齐,1为居中,2为右对齐,3为两端对齐,4为分散对齐,5为垂直居中对齐,7为垂直顶端对齐,8为垂直底端对齐,9为泰文对齐(5~9还有待确认)缩进:‘first_line_indent‘(首行缩进,如为负值则是悬挂缩进), ‘left_indent‘(段落左侧缩进), ‘right_indent‘(段落右侧缩进)。距离属性都可通过尺寸对象docx.shared.xx()进行设置(详见下文公用对象)间距:‘line_spacing‘(行距), ‘line_spacing_rule‘(行距预设值,0表示单倍行距,1表示1.5倍行距,2表示2倍行距,3表示最小行距,4表示固定行距,5表示多倍行距), ‘space_after‘(段后间距), ‘space_before‘(段前间距)。除行距预设值外,其他都是距离属性,都可通过尺寸对象docx.shared.xx()进行设置(详见下文公用对象)换行和分页:‘keep_together‘(段中不分页), ‘keep_with_next‘(与下段同页), ‘page_break_before‘(段前分页), ‘widow_control‘(孤行控制),均为逻辑值(True/False)制表位:‘tab_stops‘,返回该段落采用的制表位集合。所谓制表位,就是在标尺上出现的标记,用于控制tab键的对齐方式。doc.paragraphs[n].tab_stops.add_tab_stop(position, alignment=0, leader=0) #在position(离段落左边界的距离)位置添加一个制表位,alignment为制表位对齐方式(0为左对齐,1为居中,2为右对齐,3为小数点对齐,4为竖线对齐),leader为前导符(0为无,1为.....,2为---,3为___,4为……)doc.paragraphs[n].runs[m].add_tab() #在块操作中,可增加制表符。也可直接在段落或块的text属性中写入‘ ‘,也表示一个制表符

块操作:

doc.paragraphs[n].runs #返回段落n的块集合,其组成元素为块对象,可以通过索引获取

doc.paragraphs[n].add_run(text=None, style=None) #在段落末尾增加一个新的块

doc.paragraphs[n].runs[m].add_break(break_type=6) #在块末尾增加分隔符。break_type为分隔符类型(2为下一页分节符,3为连续分节符,4为偶数页分节符,5为奇数页分节符,6为换行符,7为分页符,8为分栏符,9、10、11都可认为是换行符。注意区别节对象的start_type属性,两者分节符的代码并不一样)。换行符即‘ ‘,其也可通过.text属性设置

doc.paragraphs[n].runs[m].add_text(text) #在块末尾增加文字内容

doc.paragraphs[n].runs[m].text #返回或设置块的文本内容

doc.paragraphs[n].runs[m].element.drawing_lst #返回块中的图形列表,包括内联图形和非内联图形,相比doc.inline_shapes更完整!!!

doc.paragraphs[n].runs[m] #返回段落n的块对象m。可以通过其属性访问或设置块的格式(主要是文字样式),其主要属性包括:

  • 加粗: ‘bold‘,True表示加粗斜体:‘italic‘,True表示斜体下划线:‘underline‘,一共可设置18种下划线样式(常用的0为无下划线,1为单下划线,3为双下划线,4为点下划线,6为加粗单下划线,11为波浪线)字体:‘font‘,返回字体对象,通过字体对象的以下属性可以设置块文字字体样式:name:字体名称size:字体大小,可通过磅数docx.shared.Pt()进行设置(详见下文公用对象)bold:True表示加粗italic:True表示斜体underline:下划线,同上可设置18种下划线样式

内联图形操作:

doc.inline_shapes #文档所有内联图形的集合,其元素为内联图形对象,可索引

doc.paragraphs[n].add_picture(image_path_or_stream, width=None, height=None) #在文档末尾增加内联图形,作为一个新的段落。image_path_or_stream为图片文件路径或文件对象。width(图片宽度)、height(图片高度)可通过尺寸对象docx.shared.xx()进行设置(详见下文公用对象),指定其中之一即可,另一将按比例缩放

doc.paragraphs[n].runs[m].add_picture(image_path_or_stream, width=None, height=None) #在块末尾增加内联图形。image_path_or_stream为图片文件路径或文件对象。width(图片宽度)、height(图片高度)可通过尺寸对象docx.shared.xx()进行设置(详见下文公用对象),指定其中之一即可,另一将按比例缩放

doc.inline_shapes[n] #索引为n的内联图形对象。通过其属性可访问或设置对应内联图形的格式,主要属性包括:

  • 图片尺寸:‘height‘, ‘width‘,可通过尺寸对象docx.shared.xx()进行设置(详见下文公用对象)图片类型:‘type‘(3表示图片,4表示链接图片,12表示图表,15表示smart-art图形)

表格操作:

doc.tables #文档中的表格对象集合,可索引

doc.tables[n].add_row() #在表格底部增加一行

doc.tables[n].add_column(width) #在表格右侧增加一列,列宽为width,可通过尺寸对象docx.shared.xx()进行设置(详见下文公用对象)

doc.tables[n].rows #返回表格行对象集合

doc.tables[n].columns #返回表格列对象集合

doc.tables[n].row_cells(rowx) #返回表格行索引为rowx的单元格对象集合

doc.tables[n].column_cells(colx) #返回表格列索引为colx的单元格对象集合

doc.tables[n].cell(rowx, colx) #返回表格行、列索引分别为rowx、colx的单元格对象。单元格具有属性:‘add_paragraph‘, ‘add_table‘, ‘merge‘, ‘paragraphs‘, ‘tables‘, ‘text‘, ‘width‘等

doc.tables[n] #索引为n的表格,通过其属性可访问或设置表格格式,主要属性包括:

  • 对齐方式:‘alignment‘,缺省0表示左对齐,1表示居中,2表示右对齐。自动调整:‘autofit‘,如为True,表示根据内容自动调整列宽。False表示固定列宽。如果表格宽度超过页面宽度,则无论True还是False,表格列宽都将自动调整表格方向:‘table_direction‘,True表示从右向左排列,False(默认)表示从左向右排列

样式操作:

doc.styles #返回文档样式集合,其元素包括段落样式、表格样式、字符样式、列表样式,只可通过键访问(键为样式名称)(区别于文档其他对象集合通过索引访问)

doc.styles.add_style(name, style_type, builtin=False) #新增一个样式。name为样式名称,style_type为样式类型(1代表段落;2代表字符;3代表表格;4表示列表),builtin(bool)表示是否为內建样式

公用对象:

docx.shared.xx() #尺寸对象,可用于各类尺寸相关设置,包括多种单位制(厘米Cm、毫米Mm、英寸Inches、磅数Pt、Emu、缇Twips)

docx.enum.shape.WD_INLINE_SHAPE #表示内联图形类型的常量类

docx.enum.text.WD_ALIGN_PARAGRAPH #表示段落对齐方式的常量类

docx.enum.text.WD_PARAGRAPH_ALIGNMENT #同docx.enum.text.WD_ALIGN_PARAGRAPH

docx.enum.text.WD_BREAK #表示分隔符类型的常量类

docx.enum.text.WD_BREAK_TYPE #同docx.enum.text.WD_BREAK

docx.enum.text.WD_COLOR #表示颜色的常量类

docx.enum.text.WD_COLOR_INDEX #同docx.enum.text.WD_COLOR

docx.enum.text.WD_LINE_SPACING #表示行距的常量类

docx.enum.text.WD_TAB_ALIGNMENT #表示制表位对齐方式的常量类

docx.enum.text.WD_TAB_LEADER #表示制表位前导符的常量类

docx.enum.text.WD_UNDERLINE #表示下划线类型的常量类

通过对上面对介绍,希望对大家运用Python_docx处理word文档有帮助,当然编程之道十分灵活和广大,小编也是这编程之路的探索者之一。如果有不好之处,还请各位大佬多多指教。

为了让大家更好地更快速的学习Python,小编准备了一份适合Python初学者的系统入门学习资料,加群959997225即可免费领取。

本文来自网络,如有侵权,请联系小编删除!

原文地址:https://www.cnblogs.com/666fx/p/10098638.html

时间: 2024-10-06 12:40:09

运用好Python处理文档的小技巧,让你成为女神心中superstar!的相关文章

zoho在线文档使用小技巧

在线文档编辑工具Zoho Writer的日渐完善.感谢亲们!我们择取论坛中呼声最高的几个新需求,加以实现,希望大家喜欢. 显示代码片段每行的编号有的用户喜欢用Writer来保存代码文档,同时共享给同事,一起讨论代码这么写合不合适.方法是在文档中点击+号–>插入代码,即可.现在可以在代码片段中任意位置点击右键,显示代码每行的编号,方便区分和讨论. 在文档中插入电子表格不,不是普通的插入表格,而是插入另一款Zoho产品 - 在线表格工具Sheet的表格.相比普通表格,它对于表格数据的编辑.处理能力更

python统计文档中词频

python统计文档中词频的小程序 python版本2.7 程序如下,测试文件与完整程序在我的github中 1 #统计空格数与单词数 本函数只返回了空格数 需要的可以自己返回多个值 2 def count_space(path): 3 number_counts = 0 4 space_counts = 0 5 number_list = [] 6 7 with open(path, 'r') as f: 8 for line in f: 9 line = line.strip() 10 sp

Python 单元测试 & 文档测试

1.1   单元测试 1.1.1   单元测试编写 单元测试是用来对一个模块.一个函数或者一个类来进行正确性检验的测试工作. 编写一个Dict类,这个类的行为和dict一致,但是通过属性来访问. >>> d = Dict(a=1, b=2) >>> d['a'] 1 >>> d.a 1 class dict编写如下: [[email protected] python]# cat mydict.py #!/usr/bin/python # -*- co

如何查询python帮助文档;sublime 快捷键

# 帮助文档 1.dir函数式可以查看对象的属性:Python命令窗口输入 dir(str) 即可查看str的属性. 2. 如何查看对象某个属性的帮助文档 ? 如要查看str的split属性,可以用__doc__(双下划线), 使用方法为print(str.split.__doc__) 或者help函数,使用方法为help(str.split). 要注意在python3.4中查看其它模块的对象属性要在help函数中加上‘’,help('time.strftime'): 或者先加载模块 impor

如何在命令行模式下查看Python帮助文档---dir、help、__doc__

如何在命令行模式下查看Python帮助文档---dir.help.__doc__ 1.dir函数式可以查看对象的属性,使用方法很简单,举str类型为例,在Python命令窗口输入 dir(str) 即可查看str的属性,如下图所示: 2.如何查看对象某个属性的帮助文档 ?如要查看str的split属性,可以用__doc__, 使用方法为print(str.split.__doc__),如下图所示: 3.查看对象的某个属性还可以用help函数,使用方法为help(str.split),如下图所示:

Docker相关环境全套安装文档兼小技能

Docker相关环境全套安装文档兼小技能 以下环境皆为ubuntu16.04,主要安装docker,docker-compose,docker仓库等. Docker安装 参考官方 A: 有源安装 Ubuntu的 Docker 安装: sudo apt-get remove docker docker-engine docker.io containerd runc sudo apt-get update sudo apt-get install apt-transport-https ca-ce

python idle一些简单的小技巧

编辑状态时:Ctrl + [ .Ctrl + ] 缩进代码Alt+3 Alt+4 注释.取消注释代码行Alt+5 Alt+6 切换缩进方式 空格<=>TabAlt+/ 单词完成,只要文中出现过,就可以帮你自动补齐.多按几次可以循环选择Alt+M 打开模块代码,先选中模块,然后按下此快捷键,会帮你打开改模块的py源码供浏览Alt+C 打开类浏览器,方便在源码文件中的各个方法体之间切换Alt+FP 打开路径浏览器,方便选择导入包进行查看浏览F1 打开Python文档,比Editplus 方便吧,不

pdf文档的编辑技巧

PDF文档的编辑技巧 现如今PDF文档的应用范围越来越广了,在很多领域甚至PDF格式已经取代了Word文档,成为重要的文档格式.很多人都会觉得PDF格式的文档只能进行阅读了,对于里面的内容我们既不能复制也不能进行修改编辑.为了解决这个问题,各国的专业技术人员都在攻克这个问题,最终PDF编辑器也因此而诞生了. 有了PDF编辑器,我们就能对PDF文档进行修改了,大大的方便了我们的工作和学习.现在国内外的PDF编辑器比较多,但其中大多数都是收费的,而且软件内存比较大,运行起来也对电脑配置要求高.今天就

如何翻译整个Word文档,这个技巧你得会

在办公中需要用到word文档的地方有很多,但是当你在处理word文档时候,发现打开的word文档是英文的该怎么办呢?这时候就需要进行翻译了,那么如何翻译整个Word文档,这个技巧你得会. 迅捷PDF转换器https://www.xunjiepdf.com/converter 下面就通过具体的例子教大家如何对整个word文档进行翻译,望能帮助到大家!介于操作的是Word文件,可以选择直接在电脑中打开这份Word文件进入到主页面:通过移动鼠标选择到"审阅"其中就包括了"翻译&qu