大佬们!我找了很久没有类似问题!
就像上图,假设第一行为原有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