Python如何实现对Word中指定文字或字母进行颜色的修改?

大佬们!我找了很久没有类似问题!

就像上图,假设第一行为原有word,如何用python对指定的字母进行颜色的修改?

简单分析一下,官方接口看https://python-docx.readthedocs.io/en/latest/user/quickstart.html#applying-a-paragraph-style

接下来说正题:

这个是测试看结构和字色用的

from docx import Document
Doc = Document(文档路径)
#print(dir(Doc))
for pg in Doc.paragraphs:
	for run in pg.runs:
		print(run.text)
		print(run.font.color.rgb)

善用dir看object里的所有key,对照官方文档的接口理解。

题主这里关注的应该是一个段落里的正文内容。如果没有特殊处理,一个段落里就只有一份正文段run。

拆解开看,ABCD四个字符对应四个颜色,在这里是四个正文段,A[黑]B[红]C[黑]D[黄]

所以实际处理代码应该是

from docx import Document
from docx.shared import RGBColor
Doc = Document("test.docx")	#读取用
outDoc = Document()			#输出用

#print(dir(Doc))
idx = 0
colors = [RGBColor(0,0,0),RGBColor(255,0,0),RGBColor(0,0,0),RGBColor(255,255,0)]
for pg in Doc.paragraphs:
	outPg = outDoc.add_paragraph('',pg.style)
	for run in pg.runs:
		for i in range(len(run.text)):
			outRun = outPg.add_run(run.text[i])		#逐字输出
			outRun.font.color.rgb = colors[idx]
			idx = (idx + 1) % len(colors)
outDoc.save("test1.docx")

将段落文本逐字换色,且按照[黑,红,黑,黄]循环替换。

要继承原正文的字体、字号、加粗等你可以自己研究

指定字符做操作就在run.text里查询是否有关注的字符,有的话类似上述操作,拆成多个run再输出

附图:

用Python读写word的框架

python-docx

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

参考这里:https://www.sohu.com/a/311571861_797291