首页 > 解决方案 > Python - 如何在写入 MS Word 时使段落变为粗体和红色?

问题描述

document.add_paragraph(event_name.text, style='List Bullet')

你好!我在上面的代码行中尝试了 font.bold= True(没有工作),我只能创建一个列表项目符号格式,但无法使其变为粗体和红色。你能告诉我代码吗?提前致谢!

整个代码,以防您需要:

from bs4 import BeautifulSoup
from docx import Document
from docx.shared import Pt
import requests

user_agent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.``3945.88 Safari/537.37"
url = "https://www.mei.edu/events/past-events"
data = requests.get(url, headers={"User-Agent": user_agent})
soup = BeautifulSoup(data.text, "lxml")

document = Document()

heading = document.add_heading().add_run("Middle East Institute (MEI)")
heading.font.name = "Cambria"
heading.font.size = Pt(14)

events = soup.find_all("div", class_ = "feature__body boxed boxed--border")

for event in events:
    event_name = event.find("h4")
    link = event.find("a")
    try:
        print(event_name.text)
        document.add_paragraph(event_name.text, style='List Bullet')
        print(link['href'])
        document.add_paragraph(link['href'])
    except:
        continue

document.save('demo.docx')

标签: pythonpython-3.x

解决方案


您是否查看过您正在使用的库的文档docx,特别是应用粗体和斜体的快速入门部分

文本格式只能在Run级别应用。您必须稍微分解您现在拥有的代码才能使其以您想要的方式工作:

print(event_name.text)
event_paragraph = document.add_paragraph(style='List Bullet')
event_paragraph.add_run(event_name.text).bold = True

推荐阅读