这篇文章主要介绍了Python怎么修改词文档样式,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。
需求描述
手上现有若干份财务分析报告的词文档,如下:
每一份词文档中的内容如下:
为了方便后续审阅,需要将所有文档中所有含有资金的语句标红加粗,如图所示
步骤分析和前置知识
为了解决这个需求简单复习一下相关知识.Word文档一般而言由文档(文档)-段落(段)——文字块(运行)三级结构组成:
从需求反馈中可以看的出,本质上我们需要做的就是对所有含有资金的文字块跑进行样式调整
因此,本需求的逻辑如下:
1。创建一个空文件夹(用于存放修改后的财务报告,避免直接对原文件修改)
2。通过一滴获取目标文件夹下的所有字路径
3。利多克斯用模块对每个词文档遍历,并获取包含特定词的文字块
4。对文字块进行样式修改
代码实现
首先导入需要的库并设置目标文件夹路径
得到docx import 文档 得到docx.shared import  RGBColor, Pt,厘米 import 操作系统 import 水珠 #,此处更换创建文件夹的路径 时间=mkdir_path " # 39; C: \ xxx \ \用户new_dir& # 39; #,此处更换所有文件所在的位置 file_path =, " # 39; C: \ xxx用户\ \ & # 39;
操作系统和一团我们都很熟悉,这里简单介绍一多克斯下模块这是一个非标准库,在命令行中我们需要输入以下命令安装:
pip install python-docx
尤其要注意安装时候输入的是python-docx,而实际调用时多克斯为
实例化具体的词文档代码为:
得到docx import 文档 时间=wordfile 文档(路径)
如果不指定路径则为创建新的词文档,这点跟操作Excel的openpyxl不太一样,有机会再做介绍。
现在我们建立文件夹存放新生成的文件,首先判断文件夹是否存在,不存在时再运行操作系统。mkdir避免报错
if not os.path.exists (mkdir_path): ,,,os.mkdir (mkdir_path)
接着遍历词文档,利用一滴模块的通配符,框架如下:
for file 拷贝glob.glob(时间+ file_path & # 39;/*。docx # 39;): ,,,通过
根据三级结构,一个文档文档有一个或多个段落个段落,一个段落段有一个或多个文字块,合起来代码为:
for file 拷贝glob.glob(时间+ file_path & # 39;/*。docx # 39;): ,,,docx =,文档(文件) ,,,for paragraph 拷贝docx.paragraphs: ,,,,,,,for run 拷贝paragraph.runs: ,,,,,,,,,,,通过
最后我们针对特定词修改样式,遍历到文字块后就可以做判断了
,,,,,,,,… ,,,,,,,for run 拷贝paragraph.runs: ,,,,,,,,,,,if & # 39;资金& # 39;,拷贝run.text: ,,,,,,,,,,,,,,,run.font.bold =, True #,加粗 ,,,,,,,,,,,,,,,run.font.color.rgb =, RGBColor(0, 255,, 255), #,设置字体颜色 ,,,,,,,#,最后切记保存 ,,,,,,,docx.save(时间+ mkdir_path & # 39;/& # 39;, +, os.path.basename(文件)
当然,除了修改字体颜色和加粗之外,还支持其他样式的设置,以下列出常用的作为参考:
#,加粗 run.font.bold =,真的 #,斜体 run.font.italic =,真的 #,下划的线 run.font.underline =,真的 #,删除线 run.font.strike =,真的 #,字号 run.font.size =, Pt (20) #,阴影 run.font.shadow =,真的 #,字体颜色 时间=run.font.color.rgb RGBColor (255, 0, 255)
至此,整个需求就顺利结束了,附上完整代码:
得到docx import 文档 得到docx.shared import  RGBColor, Pt,厘米 import 操作系统 import 水珠 mkdir_path =, " # 39; C: \ xxx \ new_dir) & # 39; if not  os.path.exists (mkdir_path): ,,,os.mkdir (mkdir_path) 时间=keyword & # 39;资金& # 39; 时间=file_path " # 39; C: \ \用户xxx # 39; for file  glob.glob拷贝(file_path +, & # 39; \ *。docx # 39;): ,,,docx =,文档(文件) ,,,for paragraph 拷贝docx.paragraphs: ,,,,,,,for run 拷贝paragraph.runs: ,,,,,,,,,,,if keyword 拷贝run.text: ,,,,,,,,,,,,,,,run.font.bold =,真的 ,,,,,,,,,,,,,,,run.font.color.rgb =, RGBColor (255, 0, 0) nullPython怎么修改词文档样式