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中提供了許多功能,類似于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)文章
Python數(shù)據(jù)解析bs4庫(kù)使用BeautifulSoup方法示例
這篇文章主要為大家介紹了Python數(shù)據(jù)解析bs4庫(kù)使用BeautifulSoup方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08Python驗(yàn)證用戶密碼是否規(guī)范腳本示例
對(duì)用戶密碼的強(qiáng)度進(jìn)行校驗(yàn),要求用戶密碼達(dá)到一定的強(qiáng)度,符合安全性要求,這篇文章主要給大家介紹了關(guān)于Python驗(yàn)證用戶密碼是否規(guī)范的相關(guān)資料,需要的朋友可以參考下2024-05-05簡(jiǎn)單了解python高階函數(shù)map/reduce
這篇文章主要介紹了簡(jiǎn)單了解python高階函數(shù)map/reduce,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-06-06人工智能學(xué)習(xí)Pytorch張量數(shù)據(jù)類型示例詳解
這篇文章主要為大家介紹了人工智能學(xué)習(xí)Pytorch張量數(shù)據(jù)類型的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-11-11Python實(shí)現(xiàn)數(shù)字的格式化輸出
這篇文章主要介紹了Python如何實(shí)現(xiàn)數(shù)字的格式化輸出,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-08-08python 中的paramiko模塊簡(jiǎn)介及安裝過(guò)程
這篇文章主要介紹了python 中的paramiko模塊簡(jiǎn)介及安裝過(guò)程,通過(guò)實(shí)例詳解給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2020-02-02