部分字体标红,不知道如何实现
问题描述:
本小节练习中的部分字体标红,不知道如何实现,如下为我的作业,请老师指导下

相关代码:
# coding:utf-8
from docx import Document
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.shared import Pt,RGBColor
from docx.oxml.ns import qn
doc = Document()
# 添加标题,标题级别0,并将标题居中
title = doc.add_heading('慕课网是谁',0)
title.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
style = doc.styles['Normal']
style.font.name = '微软雅黑'
style.element.rPr.rFonts.set(qn('w:eastAsia'),u'微软雅黑')
# 添加正文段落,微软雅黑,15号字体,其中三个学者标红
# 1.添加内容
p = doc.add_paragraph('我们是IT教育行业的造梦者,也是前沿技术内容的创造者和传播者!\n')
p.add_run('\n体系课:\n\n')
list_1 = ['1.Python全栈工程师','2.Java工程师','3.前端工程师']
for i in range(3):
p.add_run(list_1[i])
p.add_run('\n')
print(p.text)
# 2.设置字体
p.style.font.name = '微软雅黑'
p.style.font.size = Pt(15)
# 3.设置部分字体红色???
list_2 = ['造梦者','创造者','传播者']
para_1 = doc.paragraphs[0].text
for i in list_2:
if i in para_1:
run = para_1.add_run(i)
run.style.font.color.rgb = RGBColor(255,0,0)
# 分页,并添加标题,标题级别0
doc.add_page_break()
doc.add_heading('学生信息',0)
# 添加表格,三行四列,并将2名成员信息填入
r=3
c=4
table = doc.add_table(r,c)
list_3 = [
('序号','姓名','年龄','身高'),
('1','张三','20','174'),
('2','李四','19','167')
]
for i in range(r):
row_cells = table.rows[i].cells
for j in range(c):
row_cells[j].text = list_3[i][j]
# 保存文件并命名为demo.docx
doc.save(r'C:\Users\Clip\Desktop\demo.docx')13
收起
正在回答 回答被采纳积分+1
1回答
好帮手慕小猿
2023-10-19 18:00:15
同学,你好!字体不像是字符串可以占位,然后使用for 循环再填充设置好的其它汉字。我们中间还有正常的不设置颜色的内容,只能按顺序设置红色字体,再设置正常的字体,不能使用循环。修改代码如下:
# coding:utf-8
from docx import Document
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.shared import Pt, RGBColor
from docx.oxml.ns import qn
doc = Document()
# 添加标题,标题级别0,并将标题居中
title = doc.add_heading('慕课网是谁', 0)
title.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
style = doc.styles['Normal']
style.font.name = '微软雅黑'
style.element.rPr.rFonts.set(qn('w:eastAsia'), u'微软雅黑')
# 添加正文段落,微软雅黑,15号字体,其中三个学者标红
# 1.添加内容
style.font.size = Pt(15)
# 添加标题,级别为0并居中显示
p= doc.add_paragraph('我们是IT教育行业的')
# 在段落后面追加文本,并可设置样式
_p = p.add_run('造梦者')
_p.font.color.rgb = RGBColor(255, 0, 0)
p.add_run(',也是前沿技术内容的')
_p = p.add_run('创造者')
_p.font.color.rgb = RGBColor(255, 0, 0)
p.add_run('和')
_p = p.add_run('传播者')
_p.font.color.rgb = RGBColor(255, 0, 0)
p.add_run('!')
#p = doc.add_paragraph('我们是IT教育行业的造梦者,也是前沿技术内容的创造者和传播者!\n')
p.add_run('\n体系课:\n\n')
list_1 = ['1.Python全栈工程师', '2.Java工程师', '3.前端工程师']
for i in range(3):
p.add_run(list_1[i])
p.add_run('\n')
print(p.text)
# 2.设置字体
p.style.font.name = '微软雅黑'
p.style.font.size = Pt(15)
# 3.设置部分字体红色???
# list_2 = ['造梦者', '创造者', '传播者']
# para_1 = doc.paragraphs[0].text
# for i in list_2:
# if i in para_1:
# run = para_1.add_run(i)
# run.style.font.color.rgb = RGBColor(255, 0, 0)
# 分页,并添加标题,标题级别0
doc.add_page_break()
doc.add_heading('学生信息', 0)
# 添加表格,三行四列,并将2名成员信息填入
r = 3
c = 4
table = doc.add_table(r, c)
list_3 = [
('序号', '姓名', '年龄', '身高'),
('1', '张三', '20', '174'),
('2', '李四', '19', '167')
]
for i in range(r):
row_cells = table.rows[i].cells
for j in range(c):
row_cells[j].text = list_3[i][j]
# 保存文件并命名为demo.docx
doc.save(r'C:\Users\Clip\Desktop\demo.docx')祝学习愉快~
Python全能工程师
- 参与学习 人
- 提交作业 16416 份
- 解答问题 4469 个
全新版本覆盖5大热门就业方向:Web全栈、爬虫、数据分析、软件测试、人工智能,零基础进击Python全能型工程师,从大厂挑人到我挑大厂,诱人薪资在前方!
了解课程

恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星