最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python-docx如何刪除所有bookmarks

 更新時(shí)間:2024年09月13日 15:32:59   作者:skyrim_H  
在Python-docx庫(kù)中,雖然沒(méi)有直接刪除書簽的功能,但可以通過(guò)操作XML元素,遍歷文檔結(jié)構(gòu)并刪除指定元素來(lái)實(shí)現(xiàn)刪除所有書簽的目的,首先要明白書簽在XML文件中的位置,然后利用Python-docx提供的element元素遍歷并刪除特定的書簽元素

python-docx刪除所有bookmarks

由于當(dāng)時(shí)生成文檔過(guò)于潦草,我想把當(dāng)時(shí)的docx文檔中的所有bookmark全部刪除,然后重新生成。

原理

在這里依然使用branch為bookmark的python-docx作為基礎(chǔ)庫(kù),找遍整個(gè)庫(kù),發(fā)現(xiàn)并沒(méi)有刪除指定元素的功能,只有清空所有內(nèi)容的clear_content的函數(shù)。

但是這個(gè)函數(shù)太過(guò)粗暴,不符合我們的要求。于是我自己想了一個(gè)刪除bookmark的方法。

在python-docx中提供了許多功能,類似于clear_content函數(shù)的實(shí)現(xiàn)原理。

我的思路

  • 我們首先要知道bookmark位于哪些標(biāo)簽下面,(docx文檔的主要成分是一個(gè)xml文件,可以用.zip打開查看),此時(shí),我們發(fā)現(xiàn)部分bookmark被掛在了body下面,部分bookmark被掛在了paragraph下面。
  • 經(jīng)過(guò)搜索,我們docx類中有一個(gè)element元素,該元素可以表示整個(gè)用于構(gòu)造xml的docx類,docx.element包含body元素,body包含paragraph、bookmark等等元素
  • 于是,我們可以參照clear_content,使用for ... in ...的方法遍歷元素,再通過(guò)if判斷element類型,刪除指定element

代碼

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)

該函數(shù)能夠直接使用

總結(jié)

其實(shí)python-docx這個(gè)庫(kù)本身功能不太完善,但是,其實(shí)它提供了很多對(duì)xml的操作模板,可供各位二次開發(fā),只是目前我對(duì)于這個(gè)庫(kù)還是不太熟悉,想實(shí)現(xiàn)自己的一些想法還是有點(diǎn)困難。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

抚松县| 富裕县| 延津县| 巴南区| 大竹县| 依安县| 昂仁县| 济源市| 新昌县| 房产| 馆陶县| 安新县| 桃江县| 运城市| 驻马店市| 祁门县| 东阳市| 乐都县| 吉安市| 缙云县| 威信县| 龙川县| 靖江市| 轮台县| 宁河县| 巴彦淖尔市| 沂源县| 建阳市| 三都| 临沧市| 徐闻县| 横峰县| 台北市| 祁连县| 灯塔市| 蕲春县| 千阳县| 南陵县| 雅江县| 和政县| 上犹县|