湫灵昱
2021-06-04 10:43
采纳率: 100%
浏览 54
已采纳

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

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

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

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

4条回答 默认 最新

  • 宁缺灬 2021-06-04 17:28
    最佳回答

    简单分析一下,官方接口看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再输出

    附图:

    评论
    解决 无用
    打赏 举报
查看更多回答(3条)

相关推荐 更多相似问题