标签:code 标准库 pen 写入文件 csv文件 write 数据 其他 名称
需求:
某些时候,我们需要将其他格式数据转换为xml,例如我们要把yikang.csv文件,转换成相应的xml。
yikang.csv:
日期,股票代码,名称,收盘价,最高价,最低价,开盘价,前收盘,涨跌额,涨跌幅,换手率,成交量,成交金额,总市值,流通市值,成交笔数
2016-01-08,‘002566,益盛药业,14.23,14.46,13.26,14.2,13.8,0.43,3.1159,2.6702,8837225,124872735.08,4709441268.0,4709441268.0,8033
yikang.xml:
...
思路:
使用标准库中的xml.etree.Elementree,构建ElementTree,使用write方法写入文件
代码:
import csv
from xml.etree.ElementTree import Element,ElementTree
from e2 import pretty
def csvtoxml(fname):
with open(fname,‘r‘,encoding=‘gbk‘) as f:
reader = csv.reader(f) # 读取csv,要先创建一个reader
headers = next(reader) # 读取csv的头部信息
root = Element(‘Data‘) # 为xml创建一个根元素
# 迭代csv文件中的每一行
for row in reader:
eRow = Element(‘Row‘) # 每一行创建一个row元素
root.append(eRow)
# 同时迭代tag(headers),text(row)
for tag, text in zip(headers,row):
e = Element(tag) # 为headers中每一个创建一个xml中的元素
e.text = text
eRow.append(e) # 将孙元素加入到父元素中去,构建好层级
pretty(root) # 进行格式的美化
return ElementTree(root) # 创建一个elementtree,即一个xml对象
if __name__ == "__main__":
et = csvtoxml(‘yikang.csv‘)
# 调用write方法把xml对象写入文件中,生成一个xml文件
et.write(‘yikang.xml‘)
e2.py:
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
标签:code 标准库 pen 写入文件 csv文件 write 数据 其他 名称
原文地址:https://www.cnblogs.com/Richardo-M-Q/p/13338306.html