1. 程式人生 > >用Python對XML讀取和處理

用Python對XML讀取和處理

簡介

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

設計原則

  • 提供不依賴平臺的資料轉移
  • 方便的編寫讀寫XML程式
  • 資料格式是可驗證的
  • 便於人工閱讀
  • 為了支援各種應用而設計

練習:提取XML資料

  • 從 xml 中提取關於文章作者的資料
  • 將其新增到列表中,一個作者對應一個條目
  • 名字、姓氏和電子郵箱標籤應該直接對應字典關鍵字
    實現程式碼如下:
def get_author(root):
    authors = []
    for author in root.findall('./fm/bibl/aug/au'):
# 用這種方法就可以建立字典
data = { "fnm": None, "snm": None, "email": None } # 用這種方法可以直接給字典中的鍵賦值 data["fnm"] = author.findtext('./fnm') data["snm"] = author.findtext('./snm') data["email"] = author.findtext('./email') # authors列表中就會包含一個又一個data字典
authors.append(data) return authors

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

[{‘fnm’:‘Omer’,‘snm’:‘Mei-Dan’,‘email’:‘[email protected]’}, {‘fnm’:‘Mike’,‘snm’:‘Carmont’,‘email’:‘[email protected]’},…]

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

findtext(要匹配的, 預設=None,名稱空間=None)

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

練習:處理屬性

  • 在上述要求之上增加有屬性特性的資料
<?xml version="1.0" encoding="utf-8"?>
<catalog>
       <maxid>4</maxid>
       <!--此處的username就是屬性,id=‘4’也是一樣的   -->
       <login username="pytest" passwd='123456'>
              <caption>Python</caption>
             <item id="4">
                    <caption>測試</caption>
            </item>
    </login>
    <item id="2">
            <caption>Zope</caption>
    </item>
    
</catalog>

處理方法如下:

def get_authors(root):
    authors = []
    for author in root.findall('./fm/bibl/aug/au'):
        data = {
                "fnm": None,
                "snm": None,
                "email": None,
                "insr": []
        }
        data["fnm"] = author.findtext('./fnm') 
        data["snm"] = author.findtext('./snm')
        data["email"] = author.findtext('./email')
        insr = author.findall('./insr')
        
# 用findall()返回的是一個列表,所以要進行一下遍歷操作
        for i in insr:
# insr鍵所對應的值是一個列表,所以給鍵賦值時可以用append方法
# 這裡attrib是一個字典,這個語句的意思是:取出attrib字典“iid”鍵所對應的值,通過append方法,
# 新增到data中“insr”鍵所對應的值得列表中。
            data["insr"].append(i.attrib["iid"])
        authors.append(data)

    return authors

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

<insr iid="I2"/>

部分輸出結果如下:

[{‘insr’:[‘I1’],‘fnm’:‘Omer’,‘snm’:‘Mei-Dan’,‘email’: ‘[email protected]’}{‘insr’[‘I2’],‘fnm’:‘Mike’,‘snm’:‘Carmont’,‘email’:‘[email protected]’}…]

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

findall(要匹配的, namespaces=None)

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

attrib介紹

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

更多精彩內容歡迎關注我的微信公眾號:資料瞎分析
在這裡插入圖片描述

相關推薦

PythonXML讀取處理

簡介 XML不是為了方便閱讀而設計,而是為了編碼為資料。當有一些文字有很多文件,可以用編碼的方式使3一些文字便與處理。 設計原則 提供不依賴平臺的資料轉移 方便的編寫讀寫XML程式 資料格式是可驗證的 便於人工閱讀 為了支援各種應用而設計 練習:提取XML資

Python 學習筆記之—— sklearn 資料進行預處理

1. 標準化 標準化是為了讓資料服從一個零均值和單位方差的標準正態分佈。也即針對一個均值為 m e

javapoi實現word讀取修改操作(轉)

java程式設計要實現對word的操作沒有vb那種程式語言來得容易,得藉助一些開源元件,其中就包括jacob、poi等, 而poi應用得最為廣泛,對word2003和2007的讀和寫word操作都十分方便。它是Apache組織的一個專案,早在2001年就已經發布了第 一個版本,可以說是apache組織的一

在 Perl 中利用 DOM XPath XML 進行有效處理

“文件物件模型(DOM)”是一個與平臺和語言無關的介面,它用於動態訪問和更新 XML 文件的內容、結構和樣式。DOM 定義了一組表示文件的標準介面、一個用於組合這些物件的標準模型和一組用於訪問和操縱它們的標準方法。DOM 是一個“W3C 建議”,這使它成為大家公認的 Web 標準。可以用包括 Perl、

python女票的聊天記錄生成心形詞雲

前言 最近看到一些利用python製作詞雲的教程,突然想到用自己和女友的聊天記錄做一個詞雲,看看平時我倆最常說的都是啥,然後用愛心的形狀展示出來,以下是成品: 由於匯出的記錄只有最近兩個星期的,再加上這兩個星期我女票她都在備考,因此聊天內容並不是特別多,

python的兩種影象讀取處理方法

 1 skimage庫      from skimage import data_dir,io, data   img = data.camera()   #讀取data中預先儲存的影象camera                         #Anaconda 版本參

pythonXML文件的良構性有效性驗證

### 一 .XML文件的結構良好性驗證 結構良好的xml文件,需要遵守下面這些規則: 1.所有開始標籤必須有對應的結束標籤 2.元素可以巢狀,但是不可以重疊 3.有且只能有一個根元素 4.屬性值必須使用引號 5.一個元素不能有兩個同樣屬性名字的屬性 6.註釋不能出現在標籤

python象反射函數反射

它的 就是 pac mouseover 打印 ges print -h func python的對象反射功能,經常在編程時使用.相比較其它的編程語言使用非常方便.反射就是用字符串來操作對象或者類,模塊中的成員. 一.對象的反射 反射功能的實現,由這4個內置函數來實現(ha

python 文件讀取寫入

end randint lines 字符串 reading 否則 line 自動 就是 f = open(‘pyehon測試.txt‘);#py2裏可以使用 open 或 file 方法打開文件,py3 只能使用 open。 #不加參數時,open為你默認為‘r‘,rea

[轉載]Python-Pcap檔案進行處理,獲取指定TCP流 https://www.cnblogs.com/sunpudding/p/9538889.html

https://www.cnblogs.com/sunpudding/p/9538889.html   Python-對Pcap檔案進行處理,獲取指定TCP流         通過對TCP/IP協議的學習,本人寫了一個可以實現對PCAP檔

串列埠的非同步讀取處理

        string strAllChar = "1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM";    &nb

利用Python PIL cPickle讀取儲存影象資料庫

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

tensorflow資料讀取處理

檔案匹配 ["file0", "file1"]或[("file%d" % i) for i in range(2)] files = tf.train.match_filenames_once("C:/path/to/data.tfrecords-*") 讀取

Pythonxml讀取(xml.dom.mindom)

# coding:UTF-8 import os from xml.dom import minidom class ConfigException(Exception): ''' 配置檔案例外 ''' pass class ReadXm

python爬蟲爬取登陸github

一 利用API簡單爬取 利用GitHub提供的API爬取前十個star數量最多的Python庫 GitHub提供了很多專門為爬蟲準備的API介面,通過介面可以爬取到便捷,易處理的資訊。(這是GitHub官網的各種api介紹)     使用到的庫 import re

python 解析XML 的幾種常見方法的介紹

XML (Extensible markup Language) 指的是可擴充套件標記語言,被設計用來傳輸和儲存資料,已經日趨成為當前許多新技術的核心,在不同的領域都有著不同的應用,它是web 發展到一定階段的必然產物   python 解析XML 常見的有三種方法 一是 xml.

python解決 圖論 多項式的矩陣、特徵值、特徵多項式的相互轉化

馬上就要畢業了,不少的同學都在緊鑼密鼓的寫論文,對於一些數學系或者理科生來說,經常會遇到一些圖論問題,根據圖形來求出這個圖的矩陣、圖的度……那麼我們知道很多的圖形都能轉化成特徵多項式,那麼今天我們就來寫一個程式,使其通過圖形的矩陣來求多項式。 開始 其實大部分數學工具(Matlab)都能

Python 快速實現 HTTP FTP 伺服器

用 Python 快速實現 HTTP 伺服器 有時你需臨時搭建一個簡單的 Web Server,但你又不想去安裝 Apache、Nginx 等這類功能較複雜的 HTTP 服務程式時。這時可以使用 Python 內建的 SimpleHTTPServer 模組快速搭建一個簡單的 HTTP 伺服器。 Si

python鹿晗、關曉彤微博進行情感分析 哭著學習學習~

前言:本文主要涉及知識點包括新浪微博爬蟲、python對資料庫的簡單讀寫、簡單的列表資料去重、簡單的自然語言處理(snowNLP模組、機器學習)。適合有一定程式設計基礎,並對python有所瞭解的盆友閱讀。 相信最近科技圈都在調侃一件事:10月8日中午的一條微博,引發了一場新浪微博使用者們(尤其是女性使用者

pythonXML的解析

python有三種方法解析XML,SAX,DOM,以及ElementTree ###1.SAX (simple API for XML )        pyhton 標準庫包含SAX解析器,SAX是