HOWTO · Python

使用 Python 將 XML 轉換為 CSV

我們將學習如何使用 Python 將 XML 轉換為 CSV。

本頁內容

XML 或 Extensible Markup Language 是一種標記語言,它以人類可讀和機器可讀的格式將資料儲存在文件中。它有一個副檔名,.xml。

CSV 或逗號分隔值將資料儲存在以逗號分隔的文件中。它有一個副檔名,.csv。在本文中,我們將學習如何使用 Python 將 XML 資料轉換為 CSV 資料。

使用 Python 將 XML 轉換為 CSV

要將 XML 轉換為 CSV,我們可以使用 Python 中內建的 xml 模組。

這個模組還有另一個模組,ElementTree,我們可以用它來將 XML 文件表示為一棵樹。它有一個方法 parse(),它接受一個 XML 文件作為引數。

它解析整個 XML 文件並將其以樹的形式儲存。樹有一個 getroot() 方法,它返回樹的根元素。

使用 for 迴圈,我們可以遍歷樹並使用標籤名稱(name、rollnumber 和 age)訪問資料。

為了理解轉換,我們需要一些樣本 XML 資料。你可以使用以下 XML 資料並將其儲存在名為 input.xml 的檔案中。

以下程式碼段將使用此資料,你也應該使用此資料,以便我們在同一頁面上。

<students>
    <student>
        <name>Rick Grimes</name>
        <rollnumber>1</rollnumber>
        <age>15</age>
    </student>
    <student>
        <name>Lori Grimes</name>
        <rollnumber>2</rollnumber>
        <age>16</age>
    </student>
    <student>
        <name>Carl Grimes</name>
        <rollnumber>3</rollnumber>
        <age>14</age>
    </student>
    <student>
        <name>Judith Grimes</name>
        <rollnumber>4</rollnumber>
        <age>13</age>
    </student>
</students>

請參閱以下 Python 程式碼以瞭解如何執行轉換。

from xml.etree import ElementTree

tree = ElementTree.parse("input.xml")
root = tree.getroot()

for student in root:
    name = student.find("name").text
    roll_number = student.find("rollnumber").text
    age = student.find("age").text
    print(f"{name},{roll_number},{age}")

輸出:

Rick Grimes,1,15
Lori Grimes,2,16
Carl Grimes,3,14
Judith Grimes,4,13