程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python使用ElementTree構建xml文件詳解

編輯:Python

1、如何構建xml文檔?

        實際案例:

                某些時候,我們需要將其他格式數據轉換為xml,例如,我們要把平安股票csv文件,轉換成相應的xml。

pingan.csv:
Data,Open,High,Low,CLose,Volume,Adj Close
2016-06-30,8.69,8.74,8.66,8.70,36220400,8.70
pingan.xml:
<Data>
<Row>
<Date>2016-06-30</Date>
<Open>8.69</Open>
<High>8.74</High>
<Low>8.66</Low>
<Close>8.70</Close>
<Volume>36220400</Volume>
<AdjClose>8.70</AdjClose>
</Row>
</Data>

        解決方案:

                使用標准庫中的xml.etree.ElementTree,構建ElementTree,使用write方法寫入文件。

2、代碼演示

    (1) 構建元素Element和元素樹ElementTree的使用

from xml.etree.ElementTree import Element, ElementTree
# 創建元素,傳入tag
e = Element('Data')
print(e.tag)
# 設置元素的屬性和text,get方法能獲取屬性,set方法能設置屬性
e.set('name', 'abc')
print(e.get('name'))
e.text = '123'
print(e.text)
# 為了便於觀察,導入tostring方法,
# 它可以看一個元素變成xml以後轉換成怎樣的字符串
from xml.etree.ElementTree import tostring
print(tostring(e))
# 元素和元素之間關系問題,可以為一個元素添加子元素
e2 = Element('Row')
e3 = Element('Open')
e3.text = '8.69'
# 讓open作為row的子元素
e2.append(e3)
print(tostring(e2))
# 然後讓Row作為Data的子元素
e.append(e2)
# 去掉Data的text
e.text = None
print(tostring(e))
# 將元素字符串寫入到文件當中去,創建ElementTree
et = ElementTree(e)
# 使用write方法直接寫文件名
et.write('build_xml.xml')

    (2) 實現csv轉換成xml

import csv
from xml.etree.ElementTree import Element, ElementTree
def pretty(e, level=0):
# 用於格式化xml數據
if len(e) > 0:
e.text = '\n' + '\t' * (level + 1)
for child in e:
pretty(child, level + 1)
child.tail = child.tail[:-1]
e.tail = '\n' + '\t' * level
def csv_to_xml(f_name): # f_name為文件名
# 讀取csv文件
with open(f_name, 'r', encoding='gb18030') as f:
reader = csv.reader(f)
# 獲取csv中頭部信息
headers = next(reader)
print(headers)
# 常見xml根元素
root = Element('Data')
for row in reader:
e_row = Element('Row')
# 為根結點添加子元素
root.append(e_row)
# 同時迭代每條數據和對應的標簽
for tag, text in zip(headers, row):
e = Element(tag)
e.text = text
e_row.append(e)
pretty(root)
# 最終返回元素樹
return ElementTree(root)
et = csv_to_xml('000001.csv')
# 將xml數據寫到文件中
et.write('000001.xml')


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved