我正在尝试使用python-docx自动执行报告编写。我在人字形括号内的模板文档中表示替换项。例如<customer_name>
。
这可以通过遍历python中的段落并执行字符串替换来正常工作。缺点是它删除了我应用于非替换文字的所有突出显示。粗体,斜体和下划线文本显示为确定。
for p in doc.paragraphs:
p.text = p.text.replace('<customer_name>', 'John Smith')
我也尝试过遍历运行(这些是模块提供的段落的另一个子集),但这还不够鲁棒,因为我的标签被划分为多次运行,而我的replace语句也无法毫无困难地检测到它们。
我是否忽略了一些小细节或替代方法,使我可以在不删除突出显示的情况下更改文本?
[通过进一步检查run
对象,有两个感兴趣的属性:font
和element
。 font
属性包含一个名为text
的属性,可用于提取和编辑不同运行的文本。 element
属性包含一个名为highlight_color
的属性。通过将highlight_color
设置为None
,可以删除突出显示。