一、前言将CSV格式转换为XML格式的方法有很多种,可以通过数据库的方式实现,很多软件也可以将CSV格式转换为XML格式。然而,这是更加困难的。本文使用Python将CSV文件批量转换为XML文件。 逗号分隔值(CSV,有时称为字符分隔值,因为分隔字符也可以不是逗号),它们的文件以纯文本存储表数据(数字和文本)。纯文本意味着文件是一个字符序列,没有必须被解释为二进制数的数据。CSV文件由任意数量的记录组成,用一些换行符分隔;每条记录由字段组成,字段之间的分隔符是其他字符或字符串,最常见的是逗号或制表符。一般来说,所有记录都有完全相同的字段序列,通常是纯文本文件。 可扩展标记语言是标准通用标记语言的子集,缩写为XML。它是一种用于标记电子文件使其结构化的标记语言。在电子计算机中,标记是指计算机能够理解的信息符号。通过这种标记,计算机可以处理各种信息,如物品等。它可以用来标记数据和定义数据类型。它是一种源语言,允许用户定义自己的标记语言。它非常适合于万维网传输,提供了一种独立于应用程序或供应商的统一方式来描述和交换结构化数据。 二、Python代码实现
from xml.etree.ElementTree import Element, ElementTree
import csv
from pathlib import Path
import os
# 创建一个文件夹 用来保存转换后的xml文件
path = os.path.join('xml_file')
if not os.path.exists(path):
os.mkdir(path)
# 将csv文件转换为xml
def csv_to_xml(file_name):
print(file_name)
with open(file_name, 'r', encoding='utf-8') as f: # 读取csv文件
reader = csv.reader(f)
header = next(reader) # 跳过表头
root = Element('Datas')
print('root', len(root))
# 处理转换
for row in reader:
erow = Element('row')
root.append(erow)
for tag, text in zip(header, row):
e = Element(tag)
e.text = text
erow.append(e)
beatau(root)
return ElementTree(root)
def beatau(e, level=0):
if len(e) > 0:
e.text = '\n' + '\t' * (level + 1)
child = None
for child in e:
beatau(child, level + 1)
child.tail = child.tail[:-1]
e.tail = '\n' + '\t' * level
if __name__ == '__main__':
csv_list = list_csv()
print(csv_list)
for index_, item in enumerate(csv_list, start=1):
print(index_, item)
et = csv_to_xml(item)
et.write(path + '/' + 'test_{}.xml'.format(index_), encoding='utf-8')
|