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
相关产品推荐
相关产品推荐

