Python截取文章段落

python_docx制作word文档详细使用说明         在实习工作中,遇到用python制作word模板的任务,其实说白了就是python-docx的使用。目前网上对这一个库的介绍得很少,很零散,所以很多功能我是尽量参考其官网,但是官网上面很多功能目前只有说明文档,而代码并还没有即使更新,以至于按照官网上面做了,python去报错了。比如:自定义表格的高度。下面,我对我在此次工作任务中,所遇到的一些基本的功能分别做一下说明与展示。我用的... 阅读详情

在Python文档处理的领域中,python-docx库是一款备受欢迎的工具,尤其在处理基本文本时表现出色。本文将专注于介绍python-docx库在基本文本处理方面的常用操作,通过简单而实用的代码示例,帮助读者轻松入门。

我们将深入研究如何使用python-docx创建、修改和格式化文本内容,以及如何利用库中的功能为文档添加段落、标题、表格等基本元素。通过本文的指导,读者将能够在自己的项目中快速实现文档的基本构建和编辑。

在下一篇更新中,我们将更深入地探讨python-docx库的高级功能,重点关注样式设置等更为复杂的特性。因此,让我们首先聚焦于基础,逐步打造一个坚实的python-docx基础,为更深入的学习铺平道路。

新建Word文档

python-docx 将 Word 文档视为一个 Document 对象,通过加载 Word 文档为 Document 对象来操作它。

# * 如何新建一个word文档
from docx import Document
document = Document()
# * 如何打开一个现有的word文档,共有三种方式:
document = Document('existing-document-file.docx')
document.save('new-file-name.docx')

f = open('foobar.docx', 'rb')
document = Document(f)
f.close()

with open('foobar.docx', 'rb') as f:
    source_stream = StringIO(f.read())
document = Document(source_stream)
source_stream.close()
target_stream = StringIO()
document.save(target_stream)

插入文本段落

word文档中的段落对应的是paragraph对象,属于document中的一个对象。

# * 向document末尾添加一个段落(返回的是最后的添加的这个段落对象的引用)
paragraph = document.add_paragraph('Lorem ipsum dolor sit amet.')
# * 还可以在这个段落之前添加段落:
prior_paragraph = paragraph.insert_paragraph_before('Lorem ipsum')
# * 下面是如何设置段落的样式
document.add_paragraph('Lorem ipsum dolor sit amet.', style='ListBullet')
# * 或这
paragraph = document.add_paragraph('Lorem ipsum dolor sit amet.')
paragraph.style = 'List Bullet'
# * 上面是block-level的样式(比如缩进)
# * 下面是Character-level的样式(用add_run来设置)
paragraph = document.add_paragraph('Lorem ipsum ')
paragraph.add_run('dolor sit amet.')
paragraph = document.add_paragraph('Lorem ipsum ')
run = paragraph.add_run('dolor')
run.bold = True
paragraph.add_run(' sit amet.')
paragraph.add_run('dolor').bold = True
# * 等同于:
run = paragraph.add_run('dolor')
run.bold = True
paragraph = document.add_paragraph()
paragraph.add_run('Lorem ipsum ')
paragraph.add_run('dolor').bold = True
paragraph.add_run(' sit amet.')

插入标题

heading对应的就是word中的标题了,level就是标题的层级。

document.add_heading('The role of dolphins', level=2)

插入分页符

page break对应的word中的分页符。

document.add_page_break()

插入表格

table对象对应word中的表格。

# * 下面是添加一个2行2列的表格
table = document.add_table(rows=2, cols=2)
# * 获取第一行第二列的单元格,并修改单元格内容
cell = table.cell(0, 1)
cell.text = 'parrot, possibly dead'
# * 获取第一行,并修改单元格内容
row = table.rows[1]
row.cells[0].text = 'Foo bar to you.'
row.cells[1].text = 'And a hearty foo bar to you too sir!'
# * 打印每个单元格内容
for row in table.rows:
  for cell in row.cells:
    print(cell.text)
# * 获取单元格的行列数
row_count = len(table.rows)
col_count = len(table.columns)
row = table.add_row()
# * 添加表格数据
items = (
(7, '1024', 'Plush kittens'),
(3, '2042', 'Furbees'),
(1, '1288', 'French Poodle Collars, Deluxe'),
)
# 下面是添加一个1行3列的表格
table = document.add_table(1, 3)
# 修改表格中第一行的数据
heading_cells = table.rows[0].cells
heading_cells[0].text = 'Qty'
heading_cells[1].text = 'SKU'
heading_cells[2].text = 'Description'
# 为每个Item添加一行数据。
for item in items:
    cells = table.add_row().cells
    cells[0].text = str(item.qty)
    cells[1].text = item.sku
    cells[2].text = item.desc
# 设置单元格样式
table.style = 'LightShading-Accent1'

插入图片

from docx.shared import Inches
document.add_picture('image-filename.png', width=Inches(1.0))

设置分栏

from docx import Document
from docx.oxml import OxmlElement
from docx.oxml.ns import qn

document = Document()
section = document.sections[0]
# * 设置栏目数为2
sectPr = section._sectPr
cols = sectPr.xpath('./w:cols')[0]
cols.set(qn('w:num'),'2')

document.save('demo.docx')

# * 下面是对每个栏目进行格式设置
from docx import Document from docx.shared import Cm, Pt
document = Document()
sections = document.sections
for section in sections: 
      section.start_type = 1 # 设置起始页为奇数 
      section.orientation = 0 # 设置页面方向为纵向 
      section.page_width = Cm(21) # 设置页面宽度 
      section.page_height = Cm(29.7) # 设置页面高度 
      section.left_margin = Cm(2) # 设置左边距 
      section.right_margin = Cm(2) # 设置右边距 
      section.top_margin = Cm(2) # 设置上边距 
      section.bottom_margin = Cm(2) # 设置下边距 
      section.gutter = Cm(0.5) # 设置分栏之间的间隔 
      section.cols_num = 2 # 设置分栏数

设置页眉页脚

# ****************设置普通页眉*********
doc = Document('existing-document-file.docx')
doc.sections[0].header.paragraphs[0].text = "这是第1节页眉"
doc.save('existing-document-file.docx')
# ****************设置奇偶页眉*********
doc = Document('existing-document-file.docx')
doc.settings.odd_and_even_pages_header_footer = True
doc.sections[0].even_page_header.paragraphs[0].text = "这是偶数页页眉"
doc.sections[0].header.paragraphs[0].text = "这是奇数页页眉"
doc.save('existing-document-file.docx')
# ****************设置奇偶页眉*********
doc = Document('existing-document-file.docx')
doc.sections[0].different_first_page_header_footer = True
doc.sections[0].first_page_header.paragraphs[0].text = "这是首页页眉"
doc.save('existing-document-file.docx')

插入文本框

from docx import Document

doc = Document()
from docx.shared import Inches

width = Inches(1.0)  # 设置文本框宽度
height = Inches(4.0)  # 设置文本框高度

# 插入文本框
text_box = doc.add_textbox(width, height)
from docx.shared import Pt
from docx.enum.text import WD_ALIGN_VERTICAL

# 在文本框中添加一个段落
paragraph = text_box.add_paragraph()

# 设置文本方向为竖排
paragraph.alignment = WD_ALIGN_VERTICAL.ORIENT_90

# 添加竖排文本
text = "竖排文本"
run = paragraph.add_run(text)

# 设置文本样式,例如字体大小和颜色
font = run.font
font.size = Pt(12)  # 设置字体大小
font.color.rgb = (0x00, 0x00, 0x00)  # 设置字体颜色(这里是黑色)
doc.save("vertical_text.docx")

插入目录

from docx.oxml.ns import qn
from docx.oxml import OxmlElement

paragraph = self.document.add_paragraph()
run = paragraph.add_run()
fldChar = OxmlElement('w:fldChar')  # creates a new element
fldChar.set(qn('w:fldCharType'), 'begin')  # sets attribute on element
instrText = OxmlElement('w:instrText')
instrText.set(qn('xml:space'), 'preserve')  # sets attribute on element
instrText.text = 'TOC \o "1-3" \h \z \u'   # change 1-3 depending on heading levels you need

fldChar2 = OxmlElement('w:fldChar')
fldChar2.set(qn('w:fldCharType'), 'separate')
fldChar3 = OxmlElement('w:t')
fldChar3.text = "Right-click to update field."
fldChar2.append(fldChar3)

fldChar4 = OxmlElement('w:fldChar')
fldChar4.set(qn('w:fldCharType'), 'end')

r_element = run._r
r_element.append(fldChar)
r_element.append(instrText)
r_element.append(fldChar2)
r_element.append(fldChar4)
p_element = paragraph._p

# 下面是自动更新目录
import lxml
import os

from docx import Document

# 设置待自动更新目录的文件
file_name = "test.docx"

# 读取文件,初始化为document对象
word_obj = Document(os.path.realpath(file_name))

# 初始化各项参数
name_space = "{http://schemas.openxmlformats.org/wordprocessingml/2006/main}"
update_name_space = "%supdateFields" % name_space
val_name_space = "%sval" % name_space

# 自动更新目录
try:
    element_update_field_obj = lxml.etree.SubElement(word_obj.settings.element, update_name_space)
    element_update_field_obj.set(val_name_space, "true")
except Exception as e:
    del e

# 保存更新后的word文件对象
word_obj.save(os.path.realpath(file_name))

---------------------------END---------------------------

题外话

当下这个大数据时代不掌握一门编程语言怎么跟的上脚本呢?当下最火的编程语言Python前景一片光明!如果你也想跟上时代提升自己那么请看一下.

在这里插入图片描述

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。


👉优快云大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述
👉 优快云大礼包:gift::[全网最全《Python学习资料》免费赠送:free:!](https://blog.youkuaiyun.com/weixin_68789096/article/details/132275547?spm=1001.2014.3001.5502) (安全链接,放心点击)

若有侵权,请联系删除

docxtpl/python-docx/openpyxl 基于docxtpl的自动化报告生成(基于word模板) 在阅读这篇文章之前,可以去看我以前写过相似的自动化报告生成文章 ps:以前在新浪博客写,然后各种被删贴后换过来这边了 基于python-docx文本生成word文档 (http://blog.sina.com.cn/s/blog_1473990d60102x4fr.html) 基于tushare文本生成word文档(http://blog....... 阅读详情

相关推荐

如何使用python-docx库设置表格单元格的边框(How to setup cell borders with python-docx)

1.在用python-docx库插入表格后,想要更改表格样式可以通过表格样式来更改,比如:设为无线框表格 table_style = 'Normal Table' 这种方法在网上一堆,便不再赘述。但这种方法很“死板”,只能选取docx库中的指定样式,做不到根据要求隐去表格的某条边框,要实现此功能,只能自己写。 2.python-docx库官方目前没有设置单元格边框的函数方法,可以使用下列代...

一把把把把住了! 1万+

python写docx自动生成目录_Python:使用Python docx/lxm创建一个“目录”

from docx.oxml.ns import qnfrom docx.oxml import OxmlElementparagraph = self.document.add_paragraph()run = paragraph.add_run()fldChar = OxmlElement('w:fldChar') # creates a new elementfldChar.set(qn(...

weixin_39636608的博客 3256

疫情数据分析的“核武器”!JHU CSSE COVID-19数据集超深度解析与实战指南(附代码)

在面对这场没有硝烟的战争时,除了医护人员在前线与病毒搏斗,还有一群默默的英雄——数据科学家和分析师,他们利用手中的“数据武器”,昼夜不停地监测、分析、预测疫情走势,为政府决策、资源调配、公众科普提供了至关重要的支撑。同时,由于某些国家(如美国、加拿大、澳大利亚、中国等)的数据细化到省/州级别,为了得到国家层面的总数据,我们需要按国家和日期进行聚合。正是在这样的背景下,经过这些步骤,我们已经得到了一个包含了累计数据、每日新增数据和活跃病例数的完整数据集,可以开始进行深入的分析和可视化了!

wylee的博客 1165

Python-docx.oxml设置word表格单元格背景颜色

【代码】Python-docx.oxml设置word表格单元格背景颜色。

YHKKun的博客 2213

macOS 12.7.6部署Ollama+Dify避坑指南

本文介绍了在macOS 12.7.6系统下部署Ollama和Dify的详细步骤及避坑指南。主要内容包括:1)关闭系统完整性保护(SIP)以允许修改系统目录;2)安装特定版本的Docker(2.1.0.5)和docker-compose(v2.38.2)以避免兼容性问题;3)配置Ollama服务并下载nomic-embed-text和deepseek-r1:7b模型;4)针对macOS调整Dify的docker配置文件,包括延长超时时间、修改存储路径、增加资源限制等关键设置。文中提供了完整的命令操作步骤和配置

Hi20240217的博客 3103

基于EKF的UWB-IMU融合定位系统在农业机器人中的抗干扰优化与Matlab仿真

本文探讨了基于扩展卡尔曼滤波(EKF)的UWB-IMU传感器融合定位系统在农业机器人中的应用。通过Matlab仿真验证,该系统有效解决了农业环境中UWB信号遮挡和IMU累积误差问题,实现了厘米级高精度定位,显著提升了机器人在复杂场景下的抗干扰能力和导航可靠性。

numpy6sculptor的博客 624

chatgpt赋能python:Python截取某段文字的方法

本文由chatgpt生成,文章没有在chatgpt生成的基础上进行任何的修改。以上只是chatgpt能力的冰山一角。作为通用的Aigc大模型,只是展现它原本的实力。对于颠覆工作方式的ChatGPT,应该选择拥抱而不是抗拒,未来属于“会用”AI的人。🧡AI职场汇报智能办公文案写作效率提升教程 🧡专注于AI+职场+办公方向。下图是课程的整体大纲下图是AI职场汇报智能办公文案写作效率提升教程中用到的ai工具。

m0_56069948的博客 1560

截取列表前面100行_50行代码让python自动生成文章

不知道从小到大,我们被迫写了多少心得体会,多少人生感想,如果真情实地的去感受写作然后成长当然很好,但是更多的都是形式主义的需求,并没有人去看里面的内容,白白浪费我们多少大好时光,有时候我们ctrl,C,V按键都磨白了有木有正如知乎上有很多类似的问题,就比如这个狗血的申请学生会退会但是当我们掌握python这个好用的工具好,我们会发现如果用python来自动生成文章,这些无用的心得体会将不会再浪费我...

weixin_39590868的博客 93

深度学习---双层神经网络中矩阵的运算及其含义记录

深度学习---双层神经网络中矩阵的运算及其含义记录神经网络的正向传播与反向传播正向传播第一层的权重矩阵第一层的输入矩阵Z^1^ = W^1^X^1^ + b^1^A^1^ = σ(Z^1^)第二层的权重矩阵第二层的输入矩阵Z^2^ = W^2^A^1^ + b^2^反向传播dz^2^ = A^2^ - Ydw^2^ = 1/n dz^2^A^1T^db^2^ = 1/n np.sum(dz^2...

qq_43228441的博客 3747

ESP32-S3驱动OV3660摄像头原理图设计,已量产

本文重点拆四条主线:多来源输入电源如何收敛到 3V3,摄像头三路供电如何拆分,ESP32-S3 如何接住 DVP 数据流与外部存储,以及音频/补光/传感外围怎样挂到主控边上。至于最终图像帧率、算法策略和软件时序,当前原理图未体现。

不脱发的程序猿 982

在Python中获取txt文本中特殊字符之间包含关键词的段落脚本

在Python中获取txt文本中特殊字符之间包含关键词的段落脚本

No_Error_1的博客 1232

Mac版 Android Studio自带模拟器无法联网解决方案

前言 作为一枚安卓开发者,免不了使用模拟器来开发调试(毕竟它比手机方便太多)。但是因为适配需要,我们会更多的使用真机开发调试,那么当模拟器遇到这样那样的问题,我们往往会无从下手,其中最烦的就是网络问题。 我最近图方便,又重新用起了模拟器,但是发现联网失败,用模拟器内置的浏览器也打不开网页,于是百度上一通找,毫无效果,各种说用cmd命令行设置模拟器dns的都没用,显示没有什么dns文件啥的,后来...

陈万洲的专栏 1万+

诚之和:Python格式化文本段落之textwrap库

在以往的文章中,我们介绍了很多对字符串数据进行处理的方式,但是对于格式化文本段落的情况我们并没有进行介绍,因为小编对这方面的库的了解并不是很多。直到小编接触到了textwrap库,小编才知道段落的操作能有多方便,今天我们就来介绍python格式化文本段落的库——textwrap库吧。 一、前言 前文是针对普通的字符串数据进行处理。今天,我们要讲解的textwrap库,是对多文本进行处理的库。比如对于段落的缩进,填充,截取等,都可以通过textwrap库进行操作。 特别是自己编写打印程序的时候,可以使用

weixin_45378258的博客 293

SAP中关于预测需求的重要载体:计划独立需求

预测,就是为了调节客户需求的波动、不平衡,使企业的生产计划、物料计划尽量平稳、有序的必备工具。计划独立需求,Planned Independent Requirement(PIR)是SAP系统中最常见的预测需求。

saplakes的博客 1879

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Python操控Word--python-docx(1)-修改字体、英文字符

文章目录1.修改文档字体1.1设置段落样式1.2自定义设置句子2.中英引号更换 pip install python-docx 1.修改文档字体 1.1设置段落样式 # 创建自定义段落样式(第一个参数为样式名, 第二个参数为样式类型, 1为段落样式, 2为字符样式, 3为表格样式) UserStyle1 = document.styles.add_style('UserStyle1', 1) # 设置字体尺寸 UserStyle1.font.size = Pt(40) # 设置字体颜色 UserStyle

bosong的博客 7311

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

一篇文章告诉你,为什么正则是最强文本处理工具,附Python演示

正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。 Python作为一门数据处理语言,经常使用正则匹配段落,比如爬虫爬取数据时。正则表达式是Python内置的模块,不需要额外安装。 今天来给大家分享一份比较全面的Python正则表达式宝典,学会之后,你将掌握正则表达式的各种应用场景。 一、re模块 re (Regular Expression简写),这

junior5的专栏 2054

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Python用textwrap格式化段落文本

文章目录快捷函数**TextWrapper**类 快捷函数 textwrap中有5个常用函数,其基本功能如下 等价形式 wrap 将字符串拆分为字符串数组 fill 将字符串进行分段 '\n'.join(wrap(...)) shorten 将字符串截短 indent 添加前缀 dedent 删除空格前缀 >>> from textwrap import * >>> from string import ascii_lett

微小冷的学习笔记 2080

python 对一篇文章,按逗号和句号分成一句一句的,然后在这篇文章中找到与某个句子类似的句子(包含相同的词)

#-*- coding:utf-8 -*-import sysreload(sys)sys.setdefaultencoding("gbk")#code:myhaspl@qq.com#12-4.pyimport numpy as npimport jiebaimport copyimport redef get_cossimi(x,y):    myx=np.array(x)    myy=np....

unikran的博客 2574

正则表达式re.DOTALL截取两个关键词之间段落的文字含换行符和空格

美元

Scott0902的博客 2160

文章主要内容提取软件[基于NLP技术]

自动创建摘要的步骤如下(1)单击【工具】菜单中的【自动编写摘要】菜单项。Word就会开始自动编写摘要,要取消正在执行的摘要,可按下Esc键。命令完成后会出现如图6-41所示的【自动编写摘要】对话框。(2)在【摘要类型】下面选择文档的显示方案。(3)在【相当于原长的百分比】框中键入或选择摘要的详细程度。(4)如果要更新文档的统计信息,请选中【更新文档统计信息】复选框。自动生成目录步骤一篇文章的内容可以是纯文本格式的,但在网络盛行的当今,更多是HTML格式的。先复制要提取的区域,...

神经网络爱好者 3174

Python基础笔记_String字符串

Python基础笔记 第一章 String字符串 文章目录Python基础笔记第一章 String字符串前言一、String字符串二、字符串常用方法总结 前言 本文记录本人在学习python过程中对python基础知识如基础数据类型等所做的笔记 提示:以下是本篇文章正文内容,下面案例可供参考 一、String字符串 1.Python中的字符可以用 单引号、双引号、三引号(三单或三双)括起来,使用反斜杠 \ 转移特殊字符 #单引号类似单词,双引号类似句子,三引号类似段落(可以直接换行) 2.Pyt

m0_54048642的博客 109

Python3 字符串数据类型

Python 基础(五) —— 字符串 字符串永远是编程语言里面的一个重要的存在,Python 中有关字符串的操作很完善,能够让初学者快速上手使用。 文章目录Python 基础(五) —— 字符串一、前言1. Python 里面字符串的表现形式有几种:2. 举例:3. 输出内容:二、转义字符1. 错误例子2. 正确例子3. 转义的其他用法三、字符串操作2.读入数据 一、前言 字符串字面意思就是由多个单字符串起组成,不管是一个字符还是多个字符组成,Python 里面都会解释成字符串。 1. Python

瞎叨叨的一天的博客 295

以下是一个利用Python动态生成中文文章标题的创意脚本,通过灵活的关键词组合和多样化的句式结构实现

本文将带您从科学角度重新认识认知效率...{sec}# 过滤敏感内容filtered = re.sub(r'(https|微博|微信|广告|政治话题)', '相关内容', content)# 生成文章示例print(generated_article[:1000]) # 打印开头部分```---### 示例生成结果(截取部分):本文将带您从科学角度重新认识认知效率...

cdAOsAye的博客 625
上一篇: Python程序计算身体质量指数BMI
下一篇: Python 统计词频
Python_P叔
博客等级 码龄3年 5451粉丝 827原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值