Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python控制Word文件中段落格式与文本格式

Python控制Word文件中段落格式与文本格式

作者头像
Python小屋屋主
发布于 2019-09-24 08:36:17
发布于 2019-09-24 08:36:17
9.2K5
举报
文章被收录于专栏:Python小屋Python小屋

本文主要介绍扩展库python-docx中关于Word文件中文本格式控制的接口和用法,可以使用命令pip install python-docx安装,然后通过名字docx来使用其中提供的功能。

1、设置段落格式

段落是Word中的一个块级对象,在其所在容器的左右边界内显示文本,当文本超过右边界时自动换行。段落的边界通常是页边界,也可以是分栏排版时的栏边界,或者表格单元格中的边界。

段落格式用于控制段落在其容器(例如页、栏、单元格)中的布局,例如对齐方式、左缩进、右缩进、首行缩进、行距、段前距离、段后距离、换页方式、Tab键字符格式等。

1.1 水平对齐方式

可以通过段落的paragraph_format属性来访问和设置段落格式,paragraph_format属性的aligenment用来访问和设置对齐方式,可用的对齐方式由WD_ALIGN_PARAGRAPH类提供,常用的主要'CENTER'(居中)、'JUSTIFY'(两端对齐)、'LEFT'(左对齐)、'RIGHT'(右对齐)。可以通过下面的方式导入WD_ALIGN_PARAGRAPH:

from docx.enum.text import WD_ALIGN_PARAGRAPH

1.2 缩进

缩进是指段落与其所在容器的左边界的水平距离,段落与左、右边界的距离可以分别进行设置而互不影响,每个段落的首行可以具有与本段其他行不同的缩进。如果首行比其他行缩进的多,称作首行缩进。如果首行比其他行缩进的少,称作悬挂缩进。

缩进量通过段落的属性paragraph_format的left_indent、right_indent、first_line_indent来指定,可以指定为Inches、Pt或Cm这样的长度值,可以指定为负值,也可以指定为None,此时表示与前面的段落相同。

from docx.shared import Inches, Pt, Cm

1.3 Tab stops

用来设置段落文本中Tab键字符的渲染方式,可以指定Tab键字符后面的文本从哪里开始(设置为长度值)、如何对齐到那个位置以及使用什么字符填充Tab键字符跨越的水平空间。

1.4 段落间距

段落的paragraph_format属性的space_before和space_after属性分别用来控制一个段落的段前和段后距离,可设置为Inches、Pt或Cm值,两段之间的实际距离由前一个段的space_after和后一个段的space_before中的最大值决定。

1.5 行距

行距指一个段落中相邻行基线的距离,可以指定为绝对值或行高的相对值,默认为单倍行高。行距可以通过段落paragraph_format属性的line_spacing或line_spacing_rule属性来指定,当line_spacing设置为长度值时表示绝对距离,设置为浮点数时表示行高的倍数,设置为None表示根据继承层次决定。

1.6 换页方式

换页方式决定一个段落在一个页面结束附近如何表现,常用属性有如下,每个属性的取值可以为True、False、None:

  • keep_together设置为True时使得整个段落出现在同一页中,如果一个段落在换页时可能会被打断就在段前换页;
  • keep_with_next设置为True时使得本段与下一段出现在同一页中;
  • page_break_before设置为True时使得本段出现在新的一页的顶端,例如新的一章标题必须从新的一页开始;
  • window_control设置为True时表示可以在必要的时候进行分页,避免本段的第一行或最后一行单独出现在一页中。

2、设置字符格式

Run属于行内元素的一种,是一个块级元素的组成部分,可以看做是一段连续的具有相同格式(字体、字号、颜色、加粗、斜体、下画线、阴影等)的文本。一般来说,一个段落会包含一个或多个Run,使得同一个段落中可以包含不同格式的文本。

可以通过一个Run对象的font属性来获取和设置该Run的字符格式,例如字体名称font.name、字体大小font.size、是否加粗font.bold、是否斜体font.italic、下画线格式font.underline(True表示单下画线,False表示没有下画线,或者使用WD_UNDERLINE中的成员设置更多下画线格式)、字体颜色font.color.rgb(设置为docx.shared.RGBColor对象)。

3、综合演示

4、运行效果

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python小屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
5 条评论
热度
最新
请问一下,python-docx模块可以设置字符底纹嘛?
请问一下,python-docx模块可以设置字符底纹嘛?
回复回复点赞举报
老师,请教一个问题。我要在word中添加段落,段落里面其中就有一个数值是变量,这个变量我定义为num50,在我把这个num50计算出来后,要写进去,用什么格式呢,直接用这个s=k.add_run('我的数据')可以把“我的数据”写进文本,可是后面相接上num50,写num50的时候用s=k.add_run(num50),程序会出错。
老师,请教一个问题。我要在word中添加段落,段落里面其中就有一个数值是变量,这个变量我定义为num50,在我把这个num50计算出来后,要写进去,用什么格式呢,直接用这个s=k.add_run('我的数据')可以把“我的数据”写进文本,可是后面相接上num50,写num50的时候用s=k.add_run(num50),程序会出错。
回复回复点赞举报
您好,请教个问题,怎么给一页应用分栏?我在网上查好久了也查不到
您好,请教个问题,怎么给一页应用分栏?我在网上查好久了也查不到
22点赞举报
先增加一节,然后使用section._sectPr.xpath('./w:cols')[0].set(qn('w:num'), '2')类似的语句设置分栏数量,再写入内容就可以了。
先增加一节,然后使用section._sectPr.xpath('./w:cols')[0].set(qn('w:num'), '2')类似的语句设置分栏数量,再写入内容就可以了。
回复回复点赞举报
num后面改成3就是3栏吗?我试了一下还是两栏。我在官方文档里没有看到过./w:cols等等这类说明,想看这些说明,教程,应该上哪学啊
num后面改成3就是3栏吗?我试了一下还是两栏。我在官方文档里没有看到过./w:cols等等这类说明,想看这些说明,教程,应该上哪学啊
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
Python爬虫框架:scrapy爬取知乎数据
基础环境沿用之前的环境,只是增加了MongoDB(非关系型数据库)和PyMongo(Python 的 MongoDB 连接库),默认我认为大家都已经安装好并启动 了MongoDB 服务。
python学习教程
2019/10/22
1.5K0
Python爬虫框架:scrapy爬取知乎数据
利用 Scrapy 爬取知乎用户信息
  思路:通过获取知乎某个大V的关注列表和被关注列表,查看该大V和其关注用户和被关注用户的详细信息,然后通过层层递归调用,实现获取关注用户和被关注用户的关注列表和被关注列表,最终实现获取大量用户信息。 一、新建一个scrapy项目   scrapy startproject zhihuuser   移动到新建目录下: cd zhihuuser   新建spider项目: scrapy genspider zhihu zhihu.com 二、这里以爬取知乎大V轮子哥的用户信息来实现爬取知乎大量用户信息。 a)
希希里之海
2018/05/16
6700
Python爬虫从入门到放弃(十九)之 Scrapy爬取所有知乎用户信息(下)
在上一篇文章中主要写了关于爬虫过程的分析,下面是代码的实现,完整代码在: https://github.com/pythonsite/spider items中的代码主要是我们要爬取的字段的定义 cl
coders
2018/01/04
8810
Python爬虫从入门到放弃(十九)之 Scrapy爬取所有知乎用户信息(下)
手把手教你用Scrapy爬取知乎大V粉丝列表
导读:通过获取知乎某个大V的关注列表和被关注列表,查看该大V以及其关注用户和被关注用户的详细信息,然后通过层层递归调用,实现获取关注用户和被关注用户的关注列表和被关注列表,最终实现获取大量用户信息。
IT阅读排行榜
2021/05/06
9410
利用Scrapy爬取所有知乎用户详细信息并存至MongoDB
崔庆才
2017/04/27
3.9K2
Scrapy爬取知乎------获取用户主页信息
新建一个scrapy项目,scrapy startproject zhihuspider
andrew_a
2019/07/30
7370
Scrapy爬取知乎------获取用户主页信息
使用Python爬取知乎上的高颜值小姐姐
get_answers_by_page - 这个函数用于获取一页的回答内容,获取的内容会存到本地MongoDB里 get_answers - 这个函数用于获取所有页的内容,它会调用上面的函数,循环获取每一页的内容 query - 这个函数用于从MongoDB里查询数据,筛选高赞回答,并且把结果打印出来
量子态的沐子呓
2020/03/09
1.7K2
我用Python爬了7W知乎用户信息,终于捕获了心仪小姐姐......
作为一个 Python 程序员,要如何找到小姐姐,避开暴击伤害,在智中取胜呢?于是就有了以下的对话: so~今天我们的目标是,爬社区的小姐姐~而且,我们又要用到新的姿势(雾)了~scrapy 爬虫框架
小小科
2018/05/03
1K0
我用Python爬了7W知乎用户信息,终于捕获了心仪小姐姐......
用Python抓取某大V的公众号文章
我之前用Charles来抓取了得到App的音频资料 抓取得到App音频数据,于是又收到有读者要我抓取公众号文章,于是就有了这一篇文章. 不知道爬谁的文章好,想了想找了比较接地气的公众号大V[匿名一下,省得被认为蹭流量],于是在微信上征得他同意后,开始干活了!
龙哥
2018/10/22
2.4K0
用Python抓取某大V的公众号文章
汽车大屏实话数据实训二之爬虫数据获取
https://www.dongchedi.com/motor/pc/car/rank_data?aid=1839&app_name=auto_web_pc&city_name=%E9%83%91%E5%B7%9E&count=10&offset=0&mnotallow=&new_energy_type=&rank_data_type=11&brand_id=&price=&manufacturer=%E8%87%AA%E4%B8%BB&series_type=&natinotallow=0 获取数据的页面:
张哥编程
2024/12/17
900
汽车大屏实话数据实训二之爬虫数据获取
新手学Python爬虫,爬取拉勾网
在之前写拉勾网的爬虫的时候,总是得到下面这个结果(真是头疼),当你看到下面这个结果的时候,也就意味着被反爬了,因为一些网站会有相应的反爬虫措施,例如很多网站会检测某一段时间某个IP的访问次数,如果访问频率太快以至于看起来不像正常访客,它可能就会禁止这个IP的访问:
python学习教程
2019/07/10
6420
新手学Python爬虫,爬取拉勾网
Python爬取微信公众号文章和评论 (基于Fiddler抓包分析)
  感觉微信公众号算得是比较难爬的平台之一,不过一番折腾之后还是小有收获的。没有用Scrapy(估计爬太快也有反爬限制),但后面会开始整理写一些实战出来。简单介绍下本次的开发环境:
happyJared
2018/09/20
4.2K0
Python爬取微信公众号文章和评论 (基于Fiddler抓包分析)
Python爬虫学习教程,批量爬取下载抖音视频
Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以小的给各位看官们准备了高价值Python学习视频教程及相关电子版书籍,欢迎前来领取!
python学习教程
2019/07/18
3K0
Python爬虫学习教程,批量爬取下载抖音视频
我用Python爬虫爬取并分析了C站前100用户最高访问的2000篇文章
最近系统地学习了正则表达式,发现正则表达式最大的应用之一——网络爬虫之前一直没有涉猎,遂借此契机顺带写一个爬虫的demo备用。选择对象是CSDN排行榜前100用户,各自按访问量从高到低排序的前20篇文章,使用一些简单的数据分析手段看看技术热点,方便今后拓宽技术栈。
润森
2022/08/18
4100
我用Python爬虫爬取并分析了C站前100用户最高访问的2000篇文章
Python爬虫从入门到放弃(二十四)之 Scrapy登录知乎
因为现在很多网站为了限制爬虫,设置了为只有登录才能看更多的内容,不登录只能看到部分内容,这也是一种反爬虫的手段,所以这个文章通过模拟登录知乎来作为例子,演示如何通过scrapy登录知乎 在通过scra
coders
2018/01/04
1.5K0
Python爬虫从入门到放弃(二十四)之 Scrapy登录知乎
Python爬虫爬取网易云音乐全部评论
beautiful now.png 思路整理 访问网易云音乐单曲播放界面,我们可以看到当我们翻页的时候网址是没有变化的,这时候我们大致可以确定评论是通过post形式加载的; .
Awesome_Tang
2018/09/11
1.5K0
Python爬虫爬取网易云音乐全部评论
【python爬虫】爬取知乎收藏夹内所有问题名称地址保存至Mysql
转载请注明源地址,代码在Github中(可能会更新):https://github.com/qqxx6661/python/
蛮三刀酱
2019/03/26
1.1K0
【python爬虫】爬取知乎收藏夹内所有问题名称地址保存至Mysql
Scrapy入门案例——爬取豆瓣电影
首先scrapy startproject douban 建立项目,其次切换到spiders目录下,scrapy genspider douban_movie 建立爬虫。
100000860378
2018/09/13
7960
Scrapy入门案例——爬取豆瓣电影
R语言爬虫实战——知乎live课程数据爬取实战
本文是一篇R语言爬虫实战练习篇,同样使用httr包来完成,结合cookies登录、表单提交、json数据包来完成整个数据爬取过程,无需书写复杂的xpath、css路径甚至繁琐的正则表达式(尽管这三个技能对于数据爬取而言意义非凡)。 之前已经演练过如何使用httr来完成网易云课堂的课程爬取,其中用到POST方法和表单提交。 今天爬取对象是知乎live课程信息,用到的GET方法,结合cookies登录和参数提交来完成,这一篇会给大家稍微涉猎一些细节技巧。 library("httr") library("dp
数据小磨坊
2018/04/11
1.5K0
R语言爬虫实战——知乎live课程数据爬取实战
Scrapy案例02-腾讯招聘信息爬取
目录 1. 目标 2. 网站结构分析 3. 编写爬虫程序 3.1. 配置需要爬取的目标变量 3.2. 写爬虫文件scrapy 3.3. 编写yield需要的管道文件 3.4. setting中配置请
py3study
2020/01/17
5790
推荐阅读
相关推荐
Python爬虫框架:scrapy爬取知乎数据
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档