我正在尝试使用python-docx自动编写报告。我在我的模板文档中用V形括号表示替换。例如<customer_name>。
这可以通过在python中迭代段落并执行字符串替换来很好地工作。缺点是它删除了我应用于非替换文本的任何高亮显示。粗体、斜体和下划线文本显示正常。
for p in doc.paragraphs:
p.text = p.text.replace('<customer_name>', 'John Smith')我也尝试过迭代运行(这些是模块提供的另一个段落子集),但这不够健壮,因为我的标记在多个运行中被划分,并且我的replace语句无法毫无困难地检测到它们。
我是否忽略了一些小细节或替代方法,这些方法允许我在不删除突出显示的情况下更改文本?
发布于 2020-05-25 18:17:47
通过进一步检查run对象,有两个有趣的属性:font和element。font属性包含一个名为text的属性,可用于提取和编辑不同运行的文本。element属性包含一个名为highlight_color的属性。通过将highlight_color设置为None,可以删除高亮显示。
一个缺点是不能保证完整的标记<customer_name>会出现在一次运行中,这意味着需要在一系列运行中使用一系列if语句来搜索标记。
https://stackoverflow.com/questions/61926238
复制相似问题