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

python-docx如何刪除所有bookmarks

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

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中提供了許多功能,類(lèi)似于clear_content函數(shù)的實(shí)現(xiàn)原理。

我的思路

  • 我們首先要知道bookmark位于哪些標(biāo)簽下面,(docx文檔的主要成分是一個(gè)xml文件,可以用.zip打開(kāi)查看),此時(shí),我們發(fā)現(xiàn)部分bookmark被掛在了body下面,部分bookmark被掛在了paragraph下面。
  • 經(jīng)過(guò)搜索,我們docx類(lèi)中有一個(gè)element元素,該元素可以表示整個(gè)用于構(gòu)造xml的docx類(lèi),docx.element包含body元素,body包含paragraph、bookmark等等元素
  • 于是,我們可以參照clear_content,使用for ... in ...的方法遍歷元素,再通過(guò)if判斷element類(lèi)型,刪除指定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的操作模板,可供各位二次開(kāi)發(fā),只是目前我對(duì)于這個(gè)庫(kù)還是不太熟悉,想實(shí)現(xiàn)自己的一些想法還是有點(diǎn)困難。

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

相關(guān)文章

最新評(píng)論

汉寿县| 谢通门县| 嫩江县| 中牟县| 鄯善县| 安吉县| 黔西| 福建省| 和田县| 玉门市| 肇州县| 齐河县| 汉源县| 西昌市| 雷州市| 祁门县| 七台河市| 军事| 洱源县| 衡山县| 霞浦县| 阿巴嘎旗| 息烽县| 昌乐县| 轮台县| 府谷县| 潢川县| 嘉兴市| 准格尔旗| 平武县| 镇沅| 泾川县| 锡林浩特市| 常山县| 开江县| 巨鹿县| 文登市| 大新县| 华池县| 哈巴河县| 乾安县|