日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python xml et_Python 标准库之 XML(下)

發(fā)布時(shí)間:2023/12/15 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python xml et_Python 标准库之 XML(下) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文字?jǐn)?shù):3253 字

閱讀本文大概需要:9 分鐘

寫(xiě)在之前

隔了兩天了,不知道你們還記得上一篇文章的內(nèi)容不,如果不記得的話請(qǐng)移步 -- Python 標(biāo)準(zhǔn)庫(kù)之 XML(上)。

今天我們繼續(xù)來(lái)學(xué)習(xí) XML 的剩下的內(nèi)容,主要是編輯和一些常用屬性和方法的總結(jié),下面開(kāi)始今天的學(xué)習(xí)。

編輯(增刪改查)

我們還是用上一篇文章中的例子,為了方便查看,我把內(nèi)容再粘貼過(guò)來(lái),下面的內(nèi)容記得保存并且命名為 test.xml。

Everyday ItalianGiada De Laurentiis200530.00Harry PotterJ K. Rowling200529.99Learning XMLErik T. Ray200339.95

上一篇文章我們主要是對(duì) xml 進(jìn)行了讀取的有關(guān)操作,其實(shí)還可以對(duì) XML 進(jìn)行編輯,也就是增刪改查的功能,下面我們來(lái)操作一下:

>>> import xml.etree.ElementTree as ET>>> tree = ET.ElementTree(file = "test.xml")>>> root = tree.getroot() #獲得根>>> root[1].tag'book'>>> del root[1]>>> for ele in root:... print(ele.tag)...bookbook

如上,我們成功的刪除了一個(gè)節(jié)點(diǎn),原來(lái)有 3 個(gè) book 節(jié)點(diǎn),現(xiàn)在就只剩下兩個(gè)了。接下來(lái)讓我們打開(kāi)源文件看看,是不是正好缺少了第 2 個(gè)節(jié)點(diǎn)呢?結(jié)果讓我們很失望,源文件并沒(méi)有什么變化。

確實(shí)如此,源文件并沒(méi)有變,因?yàn)榈搅诉@一步的修改動(dòng)作還只是停留在內(nèi)存里,還沒(méi)有將修改的結(jié)果輸出到文件,不要忘記我們是在內(nèi)存中建立的 ElementTree 對(duì)象。那么該如何做呢?請(qǐng)接著往下看:

>>> import os>>> outpath = os.getcwd()>>> file = outpath + "/test.xml"

把當(dāng)前文件的路徑拼裝好。

>>> tree.write(file)

做完上面的操作以后再去看源文件,已經(jīng)變成兩個(gè)節(jié)點(diǎn)了。

除了刪除,也是可以修改的:

>>> for price in root.iter('price'): #原來(lái)每本書(shū)的價(jià)格... print(price.text)...30.0039.95>>> for price in root.iter('price'): #每本上漲 10 元并做標(biāo)記... new_price = float(price.text) + 10... price.text = str(new_price)... price.set("updated","up")...>>> tree.write(file)

然后我們來(lái)查看一下源文件:

Everyday ItalianGiada De Laurentiis200550.0Learning XMLErik T. Ray200349.95

通過(guò)對(duì)比我們可以發(fā)現(xiàn),不僅價(jià)格改變了,而且在 price 標(biāo)簽里面增加了屬性標(biāo)記。

上面我們是用 del 來(lái)刪除某個(gè)元素,其實(shí)這個(gè)在編程中我們用的并不多,一般情況下更喜歡用 remove() 方法。比如要?jiǎng)h除 price = 50 的書(shū),可以像下面這樣操作:

>>> tree.write(file)>>> for book in root.findall("book"):... price = book.find("price").text... if float(price) == 50:... root.remove(book)...>>> tree.write(file)

于是就有了下面的結(jié)果:

Learning XMLErik T. Ray200349.95

接下來(lái)我們來(lái)看看增加元素:

>>> import xml.etree.ElementTree as ET>>> tree = ET.ElementTree(file = 'test.xml')>>> root = tree.getroot()>>> ET.SubElement(root,"book") # 在root里面添加book節(jié)點(diǎn)>>> for ele in root:... print(ele.tag)...bookbook>>> b2 = root[1]>>> b2.text = 'python'>>> tree.write('test.xml')

這樣就大功告成了,然后再像上面一樣看一下源文件,發(fā)現(xiàn)果真增加了。

常用的屬性 & 方法

ET 里面的屬性 & 方法很多,這里列出常用的幾個(gè),供使用中備查。

1.Element 對(duì)象

常用的屬性如下:

tag:string,元素?cái)?shù)據(jù)種類text:string,元素的內(nèi)容attrib:dictionary,元素的屬性字典tail:string,元素的尾形

針對(duì)屬性的操作如下:

clear():清空元素的后代,屬性,text 和 tail 也設(shè)置為 None。items():根據(jù)屬性字典返回一個(gè)列表,列表元素為(key,value)。keys():返回包含所有元素屬性鍵的列表。set(key,value):設(shè)置新的屬性鍵和值。

針對(duì)后代的操作如下:

append(subelement):添加直系子元素。extend(sunelements):增加一串元素對(duì)象作為子元素。find(match):尋找第一個(gè)匹配子元素,匹配對(duì)象可以為 tag 或 path。findall(match):尋找所有匹配子元素,匹配對(duì)象可以為 tag 或 path。insert(index,element):在指定位置插入子元素。remove(subelement):刪除子元素

2.ElementTree 對(duì)象

find(match)。findall(match)。getroot():獲取根結(jié)點(diǎn)。parse(source,parser = None):裝載 XML 對(duì)象,source 可以為文件名或文件類型對(duì)象。

寫(xiě)在之后

Python 標(biāo)準(zhǔn)庫(kù)之 XML 的基本知識(shí)大體我就說(shuō)這么多,至于明天推送什么我還沒(méi)想好,有讀者在后臺(tái)說(shuō)這個(gè)能不能弄幾個(gè)題實(shí)戰(zhàn)一下,我看看能不能找到什么能練的題,要是找到的話明天就寫(xiě)一下,要是找不到的合適的話就先放一下,以后想幾個(gè)再更。

不知道大家伙有沒(méi)有看我昨天的文章,推薦的幾個(gè)號(hào),確實(shí)不錯(cuò),沒(méi)看的話可以找著再看看,真的很不錯(cuò)。

如果你覺(jué)得本篇文章對(duì)你有所幫助的話,點(diǎn)個(gè)贊再走呀,謝謝。

The end。

總結(jié)

以上是生活随笔為你收集整理的python xml et_Python 标准库之 XML(下)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。