上节python办公自动化:自动打开word文档我们一起学会了在python里打开并保存一个word文档。这节我们将会学会如何利用python进行文本处理和将其在word里进行排版等技巧。

python进行文本处理和将其在word里进行排版等技巧

使用文本

要有效地处理文本,首先要了解一些块级元素(如段落)和内联级对象(如运行),这一点很重要。

块级与内联文本对象

该段落是Word中的主要块级对象。

块级项目在其左右边缘之间流动包含的文本,每次文本超出其右边界时添加一条附加行。对于段落,边界通常是页边距,但如果页面按列布局,它们也可以是列边界,如果段落出现在表格单元格内,则它们也可以是单元格边界。

表也​​是块级对象。

内联对象是在块级项目内发生的内容的一部分。一个例子是以粗体显示的单词或全部大写的句子。最常见的内联对象是运行。块容器中的所有内容都在内联对象内。通常,段落包含一个或多个运行,每个运行包含段落文本的某些部分。

块级项目的属性指定其在页面上的位置,例如段落前后的缩进和空格。内联项的属性通常指定内容显示的字体,如字体,字体大小,粗体和斜体。

段落属性

段落具有各种属性,用于指定其在容器(通常是页面)中的位置以及将其内容划分为单独行的方式。

通常,最好定义将这些属性收集到有意义的组中的段落样式,并将适当的样式应用于每个段落,而不是将这些属性直接重复应用于每个段落。这类似于层叠样式表(CSS)如何与HTML一起使用。此处描述的所有段落属性都可以使用样式设置,也可以直接应用于段落。

使用段落属性可用的对象 访问段落的格式属性 。

水平对齐(对齐)

也称为对齐,可以使用枚举值将段落的水平对齐设置为左对齐,居中对齐,右对齐或完全对齐(在左侧和右侧对齐) :

>>> from docx.enum.text import WD_ALIGN_PARAGRAPH

>>> document = Document()

>>> paragraph = document.add_paragraph()

>>> paragraph_format = paragraph.paragraph_format

>>> paragraph_format.alignment

None # indicating alignment is inherited from the style hierarchy

>>> paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER

>>> paragraph_format.alignment

CENTER (1)

缩进

缩进是段落与其容器边缘之间的水平空间,通常是页边距。段落可以在左侧和右侧分别缩进。第一行也可以具有与段落其余部分不同的缩进。第一行缩进比段落的其余部分缩进了第一行缩进。缩进的第一行有一个悬挂缩进。

压痕被指定使用的值,诸如,,或 。负值有效并导致段落与保证金重叠指定的金额。值为None表示从样式层次结构继承的缩进值。分配None到缩进属性将删除任何直接应用的缩进设置,并从样式层次结构中恢复继承:

>>> from docx.shared import Inches

>>> paragraph = document.add_paragraph()

>>> paragraph_format = paragraph.paragraph_format

>>> paragraph_format.left_indent

None # indicating indentation is inherited from the style hierarchy

>>> paragraph_format.left_indent = Inches(0.5)

>>> paragraph_format.left_indent

457200

>>>paragraph_format.left_indent.inches

0.5

右侧缩进以类似的方式工作:

>>> from docx.shared import Pt

>>> paragraph_format.right_indent

None

>>> paragraph_format.right_indent = Pt(24)

>>> paragraph_format.right_indent

304800

>>> paragraph_format.right_indent.pt

24.0

使用属性指定第一行缩进, 并相对于左缩进进行解释。负值表示悬挂缩进:

>>> paragraph_format.first_line_indent

None

>>> paragraph_format.first_line_indent = Inches(-0.25)

>>> paragraph_format.first_line_indent

-228600

>>> paragraph_format.first_line_indent.inches

-0.25

制表符

制表位确定段落文本中制表符的呈现。特别是,它指定制表符后面的文本将开始的位置,它将如何与该位置对齐,以及一个可选的引导字符,它将填充由制表符跨越的水平空间。

段落或样式的制表位包含在使用以下属性 访问的对象中:

>>> tab_stops = paragraph_format.tab_stops

>>> tab_stops

使用以下方法添加新的制表位:

>>> tab_stop = tab_stops.add_tab_stop(Inches(1.5))

>>> tab_stop.position

1371600

>>> tab_stop.position.inches

1.5

对齐默认为左,但可以通过提供枚举的成员来指定 。leader字符默认为空格,但可以通过提供 枚举的成员来指定:

>>> from docx.enum.text import WD_TAB_ALIGNMENT, WD_TAB_LEADER

>>> tab_stop = tab_stops.add_tab_stop(Inches(1.5), WD_TAB_ALIGNMENT.RIGHT, WD_TAB_LEADER.DOTS)

>>> print(tab_stop.alignment)

RIGHT (2)

>>> print(tab_stop.leader)

DOTS (1)

使用序列语义访问现有制表位:

>>>tab_stops[0]

更多详细信息是可用和API文档

段间距

的和 属性控制随后的段落之间的间隔,前后段落,控制间隔分别。间段间距折叠页面布局中,这意味着两个段落之间的间距是最大的的 space_after为第一段和space_before第二段的。段落间距指定为值,通常使用 :

>>> paragraph_format.space_before, paragraph_format.space_after

(None, None) # inherited by default

>>> paragraph_format.space_before = Pt(18)

>>> paragraph_format.space_before.pt

18.0

>>> paragraph_format.space_after = Pt(12)

>>> paragraph_format.space_after.pt

12.0

行间距

行间距是段落行中后续基线之间的距离。行间距可以指定为绝对距离或相对于行高(基本上是所用字体的点大小)。典型的绝对衡量标准是18分。典型的相对测量是双倍间距(2.0线高)。默认行间距是单行间距(1.0行高)。

行间距由和 属性的相互作用控制 。 line_spacing是值,a(小ish)或None。甲值表示的绝对距离。A 表示行数高度。None表示行间距是继承的。line_spacing_rule是枚举的成员或None:

>>> from docx.shared import Length

>>> paragraph_format.line_spacing

None

>>> paragraph_format.line_spacing_rule

None

>>> paragraph_format.line_spacing = Pt(18)

>>> isinstance(paragraph_format.line_spacing, Length)

True

>>> paragraph_format.line_spacing.pt

18.0

>>> paragraph_format.line_spacing_rule

EXACTLY (4)

>>> paragraph_format.line_spacing = 1.75

>>> paragraph_format.line_spacing

1.75

>>> paragraph_format.line_spacing_rule

MULTIPLE (5)

分页属性

四个段落属性,, , ,和 的段落如何表现近页边界控制方面。

导致整个段落出现在同一页面上,如果否则会在两个页面中断开,则在段落之前发出分页符。

将段落保留在与后续段落相同的页面上。例如,这可用于将节标题保留在与节的第一段相同的页面上。

导致段落放在新页面的顶部。这可以在章节标题上使用,以确保章节从新页面开始。

打破页面以避免将段落的第一行或最后一行放在与段落其余部分不同的页面上。

这些属性的所有四个都是三态,这意味着他们可以采取的价值 True,False或None。None表示属性值是从样式层次结构继承的。True表示"开启",False表示"关闭":

>>> paragraph_format.keep_together

None # all four inherit by default

>>> paragraph_format.keep_with_next = True

>>> paragraph_format.keep_with_next

True

>>> paragraph_format.page_break_before = False

>>> paragraph_format.page_break_before

False

应用字符格式

在运行级别应用字符格式。示例包括字体字体和大小,粗体,斜体和下划线。

一个对象有一个只读提供访问属性的对象。run的对象提供了获取和设置该运行的字符格式的属性。

这里提供了几个例子。有关完整的可用属性集,请参阅API文档。

可以像这样访问运行的字体:

>>> from docx import Document

>>> document = Document()

>>> run = document.add_paragraph().add_run()

>>> font = run.font

字体和大小设置如下:

>>> from docx.shared import Pt

>>> font.name = 'Calibri'

>>> font.size = Pt(12)

许多字体属性是三态,这意味着他们可以采取的价值观 True,False和None。True表示该物业处于"开启"状态,表示该物业处于False"关闭"状态。从概念上讲,该None值意味着"继承"。样式继承层次结构中存在运行,并且默认情况下从该层次结构继承其字符格式。使用该对象直接应用的任何字符格式都会覆盖继承的值。

大胆和斜体都是三态属性,如全帽,删除线,上标等等。有关完整列表,请参阅API文档:

>>> font.bold, font.italic

(None, None)

>>> font.italic = True

>>> font.italic

True

>>> font.italic = False

>>> font.italic

False

>>> font.italic = None

>>> font.italic

None

下划线是一种特殊情况。它是三态属性和枚举值属性的混合体。True意味着单一下划线,是迄今为止最常见的。False意味着没有下划线,但None如果不想要下划线,通常是正确的选择。其他形式的下划线(如double或dashed)是使用 枚举的成员指定的:

>>> font.underline

None

>>> font.underline = True

>>> # or perhaps

>>> font.underline = WD_UNDERLINE.DOT_DASH

字体颜色

每个对象都有一个对象,可以通过其只读属性访问其颜色。

将特定RGB颜色应用于字体:

>>> from docx.shared import RGBColor

>>> font.color.rgb = RGBColor(0x42, 0x24, 0xE9)

通过指定枚举的成员,还可以将字体设置为主题颜色 :

>>> from docx.enum.dml import MSO_THEME_COLOR

>>> font.color.theme_color = MSO_THEME_COLOR.ACCENT_1

通过分配None以下属性或 属性,可以将字体的颜色恢复为其默认(继承)值 :

>>>font.color.rgb = None

确定字体的颜色首先要确定其颜色类型:

>>>font.color.type

RGB (1)

属性的值可以是枚举的成员,也可以是 None。MSO_COLOR_TYPE.RGB表示它是RGB颜色。MSO_COLOR_TYPE.THEME表示主题颜色。 MSO_COLOR_TYPE.AUTO表示其值由应用程序自动确定,通常设置为黑色。(此值相对较少。)None 表示未应用颜色,颜色从样式层次结构继承; 这是最常见的情况。

当颜色类型为MSO_COLOR_TYPE.RGB时,该 属性将是一个指示RGB颜色的值:

>>>font.color.rgb

RGBColor(0x42, 0x24, 0xe9)

当颜色类型是MSO_COLOR_TYPE.THEME,该 属性将是成员 指示主题颜色:

>>> font.color.theme_color

ACCENT_1 (5)

学了这么多有趣的自动化排版知识,接下来,我们对章节的操作来进行学习。

python word排版_python办公自动化:自动进行word文档处理和排版-docx文件相关推荐

  1. 如何利用python自动化办公项目_python办公自动化:自动进行word文档处理和排版

    上节python办公自动化:自动打开word文档我们一起学会了在python里打开并保存一个word文档.这节我们将会学会如何利用python进行文本处理和将其在word里进行排版等技巧. pytho ...

  2. python打开word并在前台显示_Python办公自动化:自动打开word文档,你学到了吗?

    今天中公优就业大白和大家分享Python办公自动化:自动打开word文档. python-docx允许您创建新文档以及更改现有文档.实际上,它只允许您更改现有文档; 但如果不存在此文件,将会自动从头开 ...

  3. python打开电脑文件_python办公自动化:自动打开word文档-docx文件怎样打开

    上节python办公自动化:python自动化word快速入门,对python自动化word的操作做了快速入门,从本小节开始,逐步细致的分解讲解每一个关键步骤. python自动化word 使用文档 ...

  4. vue3 - 网页在线预览 office word 文档,打开 .doc / .docx 文件显示并解析文档内容功能效果(超详细示例功能源码,复制粘贴后开箱即用)

    效果图 本博客实现了在 vue3 项目中,实现预览 word 文档功能示例,打开后缀名为 .doc / .docx 的文件进行显示解析, 如下图真实运行所示,兼容任意浏览器,你可以一键复制示例源码稍微 ...

  5. python打印机打印图片_python连接打印机实现打印文档、图片、pdf文件等功能

    引言 python连接打印机进行打印,可能根据需求的不同,使用不同的函数模块. 如果你只是简单的想打印文档,比如office文档,你可以使用ShellExecute方法,对于微软office的文档.p ...

  6. python 合并word内容_python如何合并两个文档内容

    1.两个文档合并之前 2.合并两个文件的代码:file1 = open("name,tel.txt", "rb") file2 = open("nam ...

  7. python读取word图片_Python中如何读取Word中的图片

    Python能够快速的编写.调试,用来提取各类软件中的图片再好不过了.今天小编就为大家带来在Python中提取Word图片的方法. 方法 需要批量的修改文件后缀名,并且解压之后将图片拷贝到需要存放的地 ...

  8. python写word下标_Python用python-docx读写word文档

    备注: doc是微软的专有的文件格式,docx是Microsoft Office2007之后版本使用,其基于Office Open XML标准的压缩文件格式,比 doc文件所占用空间更小.docx格式 ...

  9. Word文档怎么横向排版?这三种方法简单高效专业

    我们在利用Word文档处理日常工作时,为了文档的美观,我们会经常对Word文档进行各种形式的排版,比如对Word文档进行横向排版.如果有小伙伴不知道该如何进行横向排版,那么今天小编将要向大家分享三个横 ...

最新文章

  1. 通用Windows应用《博客园-开发者的网上家园》开发(1)——MVVM模式
  2. HANDLE:句柄的概念
  3. 移除HTML5 input在type=number时的上下小箭头
  4. Task On The Board CodeForces - 1367D(思维)
  5. 服务器gsql密码修改,gsql远程登录
  6. 查找nginx安装的路径
  7. 伟大的RAC和MVVM入门(二)
  8. eclipse中如何修改编码格式
  9. 调整偏移量伪指令ORG
  10. linux c语言头文件 在另外的地方,linux下的c语言的头文件在windows下头文件是哪几个?...
  11. window下c语言c s通信,c++ Windows Socket实现最简单的C/S网络通信(TCP)
  12. matlab 平滑曲线拟合散点
  13. c语言10h,bios 10h中断是什么意思啊?
  14. 哈佛邓云天:Cascaded Text Generation with Markov Transformers
  15. 坚果云 不在计算机显示图标,在Ubuntu18.04系统顶栏不显示坚果云图标的解决办法...
  16. 千锋Python培训教程合集
  17. 基于COMSOL的螺栓连接 的几种有限元建模方
  18. 主从模式的数据库搭建(主从复制)
  19. writev遇到非阻塞IO
  20. 2017 计算机 暑期学校,科学网-2018,17年数学统计学计量经济暑期学校汇总-张慧铭的博文...

热门文章

  1. 凸优化之共轭函数(一)
  2. 计算机主机安装图,最新版本:计算机主机插件安装图_布法罗计算机主板安装图...
  3. 动态动作系统——一种全新的游戏人物动作制作思路
  4. 新版标准日本语高级_第7课
  5. 2020微信对话截图一件生成神器
  6. 哈希函数(散列函数)详解
  7. CSS(Emmet语法、复合选择器、元素显示模式、背景)
  8. 交付管理——怎样与客户打交道
  9. 2023年全国最新工会考试精选真题及答案53
  10. [深度学习]CNN的基础结构与核心思想