【python-docx】文本操作(段落、run、标题、首行缩进、段前段后、多倍行距、对齐方式)

这篇具有很好参考价值的文章主要介绍了【python-docx】文本操作(段落、run、标题、首行缩进、段前段后、多倍行距、对齐方式)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.概念

块级元素(block-level) 是指作为一个整体的元素,典型的是段落(paragraph)。
行内元素(inline) ,你可以把它理解为一部分块级元素,即一个块级元素包含一个或多个行内元素,典型的是run对象(我也不知道run应该翻译成什么)。
举个例子,你在Word回车换行开始输入文本,即自成一个段落,如果你选中其中的几个文字,那这些文字即为run对象

2.段落

段落(paragraph)是最主要的块级元素,比如说我们要往文档里添加文字,其实就添加段落,add_paragraph()可以添加一个段落,返回一个Paragraph对象

2.1 插入段落
from docx import Document
from docx.text.paragraph import Paragraph

doc = Document()

paragraph1 = doc.add_paragraph("这是第1个段落")
paragraph2 = doc.add_paragraph("这是第2个段落")  # type: Paragraph
# 查看文档的所有列表
print(doc.paragraphs)  # 返回包含文档所有段落的列表
# 在paragraph2这个段落的前面插入一个段落
paragraph2.insert_paragraph_before("额外插入的段落文字")

doc.save("./test.docx")

2.1 段落样式
2.1.1 引用内置样式

设置Paragraph的style属性即可

from docx import Document
from docx.text.paragraph import Paragraph

doc = Document()

paragraph1 = doc.add_paragraph("这是第1个段落")  # type: Paragraph
paragraph1.style = "List Bullet"  # 设置段落样式为无序1

# 有序段落样式
doc.add_paragraph("测试段落List Number", style="List Number")
doc.add_paragraph("测试段落List Number", style="List Number")

# 无序段落样式2
doc.add_paragraph("测试段落List Bullet 2", style="List Bullet 2")
doc.add_paragraph("测试段落List Bullet 2", style="List Bullet 2")

doc.save("./test.docx")

# 一些常用的段落样式
# styles = doc.styles
# paragraph_styles = [s for s in styles if s.type == WD_STYLE_TYPE.PARAGRAPH]
# for style in paragraph_styles:
#     print(style.name)

官方文档说段落样式名应该与微软Office保持一致,但我看了微软给出的样式名与其对不上,建议直接参考源码的给出的枚举值,位置是/docx/enum/style.py,或者官方文档:https://python-docx.readthedocs.io/en/latest/user/styles-understanding.html

2.1.2 段落对齐
from docx import Document
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT

doc = Document()

paragraph1 = doc.add_paragraph("这是居中对齐段落")
paragraph1.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER  # 居中对齐

doc.add_paragraph("这是左对齐段落").alignment = WD_PARAGRAPH_ALIGNMENT.LEFT  # 左对齐
doc.add_paragraph("这是右对齐段落").alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT  # 右对齐
doc.add_paragraph("这是两端对齐段落").alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY  # 两端对齐
doc.add_paragraph("这是分散对齐段落").alignment = WD_PARAGRAPH_ALIGNMENT.DISTRIBUTE  # 分散对齐

doc.save("./test.docx")

2.1.3 段落设置
from docx import Document
from docx.shared import Pt

doc = Document()

paragraph1 = doc.add_paragraph("这是一个普通的段落这是一个普通的段落这是一个普通的段落")
# paragraph.line_spacing_rule = WD_LINE_SPACING.EXACTLY  # 行距固定值
# paragraph.line_spacing_rule = WD_LINE_SPACING.MULTIPLE  # 多倍行距
# paragraph1.paragraph_format.line_spacing = 1.5  # 行间距,1.5倍行距
paragraph1.paragraph_format.line_spacing = Pt(20)  # 行间距,固定值20磅
paragraph1.paragraph_format.first_line_indent = Pt(10)  # 首行缩进10磅
paragraph1.paragraph_format.space_before = Pt(30)  # 段前30磅
paragraph1.paragraph_format.space_after = Pt(15)  # 段后15磅

doc.save("./test.docx")

特别说明,首行缩进的单位支持Pt、Cm、Mm、Inches等,如果想要缩进几个字符,需要自己进行转换,因为不同字号字符占用的磅数是不同的(五号字体 = 10.5pt = 3.70mm = 14px = 0.146inch)

3.Run

Run是指段落中某一部分文本,我们取到某些文本之后才能设置它们的样式,例如加粗、斜体、下划线等

from docx import Document
from docx.oxml.ns import qn
from docx.shared import Pt, RGBColor
from docx.text.paragraph import Paragraph

doc = Document()

paragraph1 = doc.add_paragraph("这是第1个段落")  # type: Paragraph
run1 = paragraph1.add_run("追加的文字")
run1.bold = True  # 加粗
run1.italic = True  # 斜体
run1.underline = True  # 下划线
# run1.text = "修改之后的文字"  # 修改文本
run1.font.name = "Times New Roman"  # 设置西文是新罗马字体
run1.element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')  # 设置中文是宋体
run1.font.size = Pt(30)  # 字号大小
run1.font.bold = False  # 是否加粗
run1.font.italic = False  # 是否斜体
run1.font.underline = False  # 是否下划线
# run.font.underline = WD_UNDERLINE.DOUBLE  # 设置为双下划线
# 查看所有下划线类型
# for line_type in WD_UNDERLINE.__members__:
#     print(line_type.name)
run1.font.shadow = True  # 是否阴影
run.font.strike = True  # 是否删除线
# run.font.double_strike = True  # 是否双删除线
run1.font.color.rgb = RGBColor(56, 36, 255)  # 字体颜色
# run1.font.color.rgb = RGBColor.from_string("ff0056")  # 字体颜色
run.font.highlight_color = WD_COLOR_INDEX.YELLOW  # 文本高亮颜色,此次设置为黄色
# 查看所有支持的高亮颜色
# for color in WD_COLOR_INDEX.__members__:
#     print(color.name)

doc.save("./test.docx")

关于下划线,font.underline=True是单行下划线,其他样式可以参考官方给出的枚举值:https://python-docx.readthedocs.io/en/latest/api/enum/WdUnderline.html#wdunderline

当然也可以直接使用完整的字符样式

from docx import Document
from docx.text.paragraph import Paragraph

doc = Document()

paragraph1 = doc.add_paragraph("这是第1个段落")  # type: Paragraph
run2 = paragraph1.add_run("又追加了文字")
run2.style = "Emphasis"  # 使用“强调”样式

doc.save("./test.docx")
4.标题

可以通过add_heading()添加标题,标题等级用数字0-9表示,其实标题也是一个Paragraph对象

from docx import Document

doc = Document()
title = doc.add_heading(text="这是一级标题", level=1)  # type: Paragraph
doc.add_heading(text="这是一级标题2", level=1)
doc.add_heading(text="这是二级标题", level=2)
print("text:", title.text)  # text: 这是一级标题
print("style:", title.style)  # style: _ParagraphStyle('Heading 1') id: 1883614425040
doc.save("./test.docx")

标题等级(level)默认是1,对应“标题1”,如果设置为0,对应“标题”文章来源地址https://www.toymoban.com/news/detail-503080.html

5.Document对象常用方法和属性
from docx import Document
from docx.shared import Inches
from docx.text.paragraph import Paragraph

doc = Document()

doc.add_heading("这是一个标题")
doc.add_paragraph("这是一个段落")
doc.add_page_break()  # 插入一个分页符,实际上是调用新建段落的add_break(WD_BREAK.PAGE)
doc.add_picture('xxx.png', width=Inches(1.0))  # 添加一张图片,实际上是调用新建段落的run.add_picture
doc.add_table(5, 6)  # 添加一个5行6列的表格

print(doc.paragraphs)  # 返回所有段落(列表)
print(doc.tables)  # 返回所有表格(列表)
print(doc.styles)  # 返回默认Styles对象

doc.save("./test.docx")

到了这里,关于【python-docx】文本操作(段落、run、标题、首行缩进、段前段后、多倍行距、对齐方式)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python操作word——python-docx和python-docx-template模块

    前言:项目用到了导出文档,综合考虑使用 python-docx 模块 pip install python-docx 三个部分 文档Document 段落Paragraph 文字块Run 文档 就是docx文档 段落 就是寻常段落 文字块 如下,短句子中有多种不同的样式,则会被划分成多个文字块。 如果所示,这个paragraph一共四个run。 四级结构

    2024年02月15日
    浏览(43)
  • python之python-docx:操作 office word 文档

    在Python中,有一个名为 python-docx 的库,它提供了丰富的功能,可以方便地创建、修改和读取Word文档。 本文将详细介绍 python-docx 库的使用,并提供一些示例来演示其中的功能。为了更好地理解,我们将分为以下几个方面进行讨论: 安装 python-docx 创建和保存Word文档 修改现有

    2024年02月12日
    浏览(37)
  • [Python进阶] Python操作word:win32com、python-docx

    7.5.1 通过win32com操作 7.5.1.1 新建word并写入内容 7.5.1.2 读取word 离离原上草,岁晚霜霰滋。 与子为兄弟,生世逢乱离。 漂荡各分散,生死安得知。 乐土叹无食,南州叹无衣。 良时幸休明,天路开清夷。 翩翩两鸿鹄,振翼思奋飞。 一留故山树,一望云中涯。 东西各异势,顾影

    2024年02月02日
    浏览(40)
  • HTML标题、段落、文本格式化

    HTML标题: 在HTML文档中,标题是很重要的。标题是通过h1 - h6标签进行定义的,h1 定义最大的标题;h6定义最小的标题。 hr 标签在HTML页面中用于创建水平线,hr元素可用于分隔内容。 可以将注释插入到HTML代码中,可以提高代码可读性。注释的写法如下:!-- 这是注释 --。 body定

    2024年02月06日
    浏览(35)
  • 【温故而知新】HTML元素/属性/标题/注释/段落/文本格式/头部/主体

    HTML(HyperText Markup Language,超文本标记语言)是用于创建网页的标准标记语言。它被用来描述网页的结构和内容,并且是网页浏览器能够解析和渲染网页的基础。HTML5 是 HTML 的最新版本,增加了许多新的元素和功能,以适应现代网页开发的需求。 HTML5 提供了许多新的元素和

    2024年01月16日
    浏览(49)
  • Python 读取 Word 详解(python-docx)

    效果图:

    2024年02月06日
    浏览(39)
  • Python系列之Python-docx生成运行日报Word模板

    因项目需求需要自动生成运行日报,想到使用Python脚本自动生成Word运行模板,接口数据访问elasticsearch获取,获取到的数据再使用pyechart生成图表展示在Word模板中。本文主要介绍python几种工具的安装部署,包括python-docx、elasticsearch和pyechart环境。 1、安装python-docx 1)官方文档

    2023年04月16日
    浏览(38)
  • Windows安装Python-docx三方库(保姆级教程)

      博主安装Python-docx三方库是一次性成功的,没有报任何错,下面我讲一下安装Python-docx三方库需要的前提环境。 1.安装Python Windows安装Python(保姆级教程) Windows安装PyCharm(保姆级教程) 2.安装python-setuptools库,这个库大多数是跟随python一起自动安装的 3.安装python-lxml库,这个需

    2024年02月06日
    浏览(44)
  • python-docx把dataframe表格添加到word文件中

    python-docx把dataframe表格添加到word文件中思路较为简单: 先把 dataframe 格式转变为 table 新建一个段落: document.add_paragraph() 把 table 添加到这个段落下方 上述代码会得到如下效果图:

    2024年02月11日
    浏览(35)
  • 「第四章」python-docx 为word添加表格、设置表格边框

    第三章中,我们讲解了如何在利用 add_heading 在 docx 文档中花式添加标题,这一节,我们来一起玩一下 docx 中的 table ,也就是表格,表格部分的内容还蛮多的,我们这一章不一定讲得完,能嘚吧多少算多少,今天刚好有时间,多更新一些哇。🎃 🧡 导入 docx 库 🧡 创建 docum

    2024年02月02日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包