You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python使用python-docx读取docx文件时如何提取每个字符的字体样式

用python-docx读取docx文本及对应字体样式的方法

可以实现该需求。docx文档中的每个段落由多个Run对象组成,同一个Run内的所有文字样式完全一致,你之前直接读取para.text是将段落内所有Run的文本拼接后返回,自然丢失了每个文本片段的样式信息。

你可以用如下代码实现文本+对应样式的读取:

from docx import Document

filename = "./test.docx"
document = Document(filename)

for para in document.paragraphs:
    # 遍历段落内的所有样式片段(Run)
    for run in para.runs:
        text = run.text
        # 跳过空内容的run
        if not text.strip():
            continue
        # 获取字体样式属性
        style_info = {
            "文本内容": text,
            "是否粗体": run.bold,
            "是否斜体": run.italic,
            "字体名称": run.font.name,
            "字体大小": run.font.size.pt if run.font.size else "继承默认大小",
            "是否有下划线": run.underline,
            "是否有删除线": run.font.strike
        }
        # 这里可以根据你的需求做存储或后续处理,示例直接打印
        print(style_info)

注意事项

  • 样式属性返回None时,代表该属性继承了段落或文档的默认样式,不是未设置。如果需要获取最终生效的样式,可以先读取段落默认样式的对应属性,再用Run的属性做覆盖即可。
  • 如果你需要逐字获取样式,直接遍历每个Run的单个字符即可,同一个Run内的所有字符样式完全一致。
  • 除上述示例的属性外,你还可以通过run.font对象获取字体颜色、上下标、字符间距等所有字体相关的样式信息。

内容的提问来源于stack exchange,提问作者aman-aman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 04:57:01