python-docx如何刪除所有bookmarks
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)文章
在Python中使用Neo4j數(shù)據(jù)庫(kù)的教程
這篇文章主要介紹了在Python中使用Neo4j數(shù)據(jù)庫(kù)的教程,Neo4j是一個(gè)具有一定人氣的非關(guān)系型的數(shù)據(jù)庫(kù),需要的朋友可以參考下2015-04-04
Matlab讀取excel并利用拉依達(dá)準(zhǔn)則篩選數(shù)據(jù)的全過(guò)程
在Excel中錄入好數(shù)據(jù)以后經(jīng)常需要被matlab讀取,具體該如何讀取并進(jìn)行篩選呢?下面這篇文章就來(lái)給大家介紹了關(guān)于Matlab讀取excel并利用拉依達(dá)準(zhǔn)則篩選數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2021-08-08
Python安裝OpenCV庫(kù)超時(shí)失敗解決
使用pip?installopencv-python安裝時(shí),安裝速度很慢,本文主要介紹了Python安裝OpenCV庫(kù)超時(shí)失敗,具有一定的參考價(jià)值,感興趣的可以了解一下2024-05-05
python實(shí)現(xiàn)簡(jiǎn)單socket程序在兩臺(tái)電腦之間傳輸消息的方法
這篇文章主要介紹了python實(shí)現(xiàn)簡(jiǎn)單socket程序在兩臺(tái)電腦之間傳輸消息的方法,涉及Python操作socket的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03
Python數(shù)據(jù)類(lèi)型轉(zhuǎn)換匯總
這篇文章主要給大家分享的是Python數(shù)據(jù)類(lèi)型轉(zhuǎn)換匯總,int,float相互轉(zhuǎn)換、int,string相互轉(zhuǎn)換、float,string相互轉(zhuǎn)換、string,list相互轉(zhuǎn)換等常見(jiàn)內(nèi)容,需要的小伙伴可以參考一下2022-03-03
使用Python導(dǎo)出Excel圖表以及導(dǎo)出為圖片的方法
這篇文章主要介紹了使用Python導(dǎo)出Excel圖表以及導(dǎo)出為圖片的方法,Python相關(guān)模塊在Windows下操作office非常方便,需要的朋友可以參考下2015-11-11
基于Python實(shí)現(xiàn)一個(gè)Word表格合并單元格工具
這篇文章主要介紹了如何基于Python實(shí)現(xiàn)一個(gè)Word表格合并單元格工具,用于處理Word文檔中的表格,主要功能是合并指定列中內(nèi)容相同的單元格,并支持多種格式設(shè)置選項(xiàng),需要的朋友可以參考下2025-11-11
python 生成正態(tài)分布數(shù)據(jù),并繪圖和解析
這篇文章主要介紹了python 生成正態(tài)分布數(shù)據(jù),并繪圖和解析,幫助大家更好的利用python進(jìn)行數(shù)據(jù)分析,感興趣的朋友可以了解下2020-12-12

