需要将其他格式数据转换xml,例如
pingan.csv:
Date,Open,High,Low,Close,Volume,Adj Close
2022-06-30,8.69,8.74,8.66,8.70,36220400,8.70
pingan.xml:
<Data>
<Row>
<Date>2022-06-30</Date>
<Open>8.80</Open>
<High>8.83</High>
<Low>8.77</Low>
<Close>8.81</Close>
<Volume>42203700</Volume>
<AdjClose>8.81</AdjClose>
</Row>
</Data>
#
使用标准库中的xml.etree.ElementTree,构建ElementTree,使用write方法写入文件
from xml.etree.ElementTree import Element,ElementTree
e = Element('Data')
e.tag
e.set('name', 'abc') # 设置属性
from xml.etree.ElementTree import tostring
tostring(e) # '<Data name = "abc"/>'
e.text = '123'
tostring(e) # '<Data name = "abc">123</Data>'
e.append # 添加子元素
e2 = Element('Row')
e3 = Element('Open')
e3.text = '8.80'
e2.append(e3)
tostring(e2)
e.text = None
e.append(e2)
tostring(e) # '<Data name="abc"><Row><Open>8.80</Open></Row></Data>'
et = ElementTree(e)
et.
et.write('demo.xml')
cat demo.xml
#
import csv
from xml.etree.ElementTree import Element,ElementTree
def csvToXml(fname):
with open(fname, 'rb') as f:
reader = csv.reader(f)
headers = reader.next()
root = Element('Data')
for row in reader:
eRow = Element('Row')
root.append(eRow)
for tag, text in zip(headers, row):
e = Element(tag)
e.text = text
eRow.append(e)
pretty(root)
return ElementTree(root)
et = csvToXml('pingan.csv')
et.write('pingan.xml') # 文件无缩进
# 缩进方法
def pretty(e,level = 0):
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
5.4【数据编码与处理】构建xml文档
最新推荐文章于 2024-10-02 10:53:34 发布
文章讲述了如何利用Python的csv模块和xml.etree.ElementTree模块将CSV数据转换成格式化的XML文件。通过创建ElementTree对象,添加元素和属性,以及处理缩进,实现了从表格数据到结构化XML的转换。
摘要由CSDN通过智能技术生成