python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > python-docx删除所有bookmarks

python-docx如何删除所有bookmarks

作者:skyrim_H

在Python-docx库中,虽然没有直接删除书签的功能,但可以通过操作XML元素,遍历文档结构并删除指定元素来实现删除所有书签的目的,首先要明白书签在XML文件中的位置,然后利用Python-docx提供的element元素遍历并删除特定的书签元素

python-docx删除所有bookmarks

由于当时生成文档过于潦草,我想把当时的docx文档中的所有bookmark全部删除,然后重新生成。

原理

在这里依然使用branch为bookmark的python-docx作为基础库,找遍整个库,发现并没有删除指定元素的功能,只有清空所有内容的clear_content的函数。

但是这个函数太过粗暴,不符合我们的要求。于是我自己想了一个删除bookmark的方法。

在python-docx中提供了许多功能,类似于clear_content函数的实现原理。

我的思路

代码

def DeleteAllBookmark(d):
    for element in d.element.body:
        if (element.__class__.__name__ == 'CT_Bookmark') or (element.__class__.__name__ == 'CT_MarkupRange'):
            d.element.body.remove(element)
            print(element.id)
        else:
            for ele in element:
                if (ele.__class__.__name__ == 'CT_Bookmark') or (ele.__class__.__name__ == 'CT_MarkupRange'):
                    element.remove(ele)

该函数能够直接使用

总结

其实python-docx这个库本身功能不太完善,但是,其实它提供了很多对xml的操作模板,可供各位二次开发,只是目前我对于这个库还是不太熟悉,想实现自己的一些想法还是有点困难。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文