用Python對XML讀取和處理

2021-08-03 01:14:43 字數 2213 閱讀 8735

簡介

xml不是為了方便閱讀而設計,而是為了編碼為資料。當有一些文字有很多文件,可以用編碼的方式使3一些文字便與處理。

設計原則

def

get_author

(root)

: authors =

for author in root.findall(

'./fm/bibl/aug/au'):

# 用這種方法就可以建立字典

data =

# 用這種方法可以直接給字典中的鍵賦值

data[

"fnm"

]= author.findtext(

'./fnm'

) data[

"snm"

]= author.findtext(

'./snm'

) data[

"email"

]= author.findtext(

'./email'

)# authors列表中就會包含乙個又乙個data字典

return authors

最後部分輸出結果如下所示:

[, ,…]

這裡我們介紹一下用於處理xml的findtext()方法

findtext(要匹配的, 預設=none,命名空間=none)

查詢發現文字文件中的第乙個子元素所要匹配的內容,匹配的內容可能是標籤名或路徑。返回第乙個匹配元素的文字內容,如果未找到元素,則返回預設值。注意,如果匹配元素沒有文字內容,則返回空字串。命名空間是從命名空間字首到全名的可選對映。

<?xml version="1.0" encoding="utf-8"?>

>

>

4maxid

>

username

="pytest"

passwd

='123456'

>

>

pythoncaption

>

"4">

>

測試caption

>

item

>

login

>

"2">

>

zopecaption

>

item

>

catalog

>

處理方法如下:

def

get_authors

(root)

: authors =

for author in root.findall(

'./fm/bibl/aug/au'):

data =

data[

"fnm"

]= author.findtext(

'./fnm'

) data[

"snm"

]= author.findtext(

'./snm'

) data[

"email"

]= author.findtext(

'./email'

) insr = author.findall(

'./insr'

)# 用findall()返回的是乙個列表,所以要進行一下遍歷操作

for i in insr:

# 新增到data中「insr」鍵所對應的值得列表中。

data[

"insr"

]"iid"])

return authors

此處的insr就帶有屬性,部分資料集中xml如下所示:

iid=

"i2"

/>

部分輸出結果如下:

[…]接下來介紹一下處理帶屬性的資料的方法:

findall(要匹配的, namespaces=none)

通過標籤名稱或路徑查詢所匹配的所有元素,返回包含文件順序中所有匹配元素的列表。命名空間是從命名空間字首到全名的可選對映。

attrib介紹

包含元素屬性的字典。注意,當屬性值始終是乙個真正的可變的python字典時,elementtree實施可能選擇其他的內部表示。

用python讀取xml檔案

本以為python讀取xml檔案和讀取excel一樣簡單,可網上各種教程複雜得一筆。我整理一種簡單的xml讀取方法。基於dom.minidom來解析xml檔案,是比較友好方便的。import xml.dom.minidom as xmldom 讀取xml檔案 xml file xmldom.pars...

python 用python對xml進行操作

首先,我先給出一段xml文件 liechtenstein yes 2 2008 141100 austria direction e switzerland direction w singapore yes 5 2011 59900 malaysia direction n panama yes ...

用DataSet讀取xml檔案

假如,有乙個這樣的xml檔案 0廣告集錦 239駿篇 flv flvimg 用心演繹.jpg flv 用心演繹.flv flv 用心演繹.flv 01 01 239238 拍攝花絮 flv flvimg 拍攝花絮.jpg flv 拍攝花絮.flv flv 拍攝花絮.flv 04 34 2381 fl...