5.4【数据编码与处理】构建xml文档

需要将其他格式数据转换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



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值