相关文章推荐
坚韧的小刀  ·  利用Saxon和xslt进行xml的格式转换 ...·  1 月前    · 
讲道义的脸盆  ·  解析或序列化 XML - ...·  1 月前    · 
想发财的野马  ·  JavaScript实现解析xml文件数据_ ...·  1 月前    · 
逃课的黑框眼镜  ·  使用架构(XSD)验证XML文件 - 陈希章 ·  1 月前    · 
爱热闹的莲藕  ·  一条sql 执行查询列表 ...·  1 年前    · 
踏实的墨镜  ·  elasticsearch实践篇:跨表joi ...·  1 年前    · 
苦闷的围巾  ·  PostgreSQL的模式、表、空间、用户间 ...·  2 年前    · 
飘逸的海龟  ·  junit5单元测试_51CTO博客_jav ...·  2 年前    · 
威武的南瓜  ·  python通过爬取汽车之家分析新能源汽车趋 ...·  2 年前    · 
Code  ›  利用Python批量将csv文件转化成xml文件开发者社区
python python函数 csv xml语言
https://cloud.tencent.com/developer/article/1908917
冷静的牛排
2 年前
作者头像
叶庭云
0 篇文章

利用Python批量将csv文件转化成xml文件

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
社区首页 > 专栏 > Python进阶之路 > 利用Python批量将csv文件转化成xml文件

利用Python批量将csv文件转化成xml文件

作者头像
叶庭云
发布 于 2021-12-01 16:24:05
643 0
发布 于 2021-12-01 16:24:05
举报

文章目录

  • 一、前言
  • 二、Python代码实现

一、前言

将 csv 格式转换成xml格式有许多方法,可以用 数据库 的方式,也有许多软件可以将 csv 转换成xml。但是比较麻烦,本文利用 Python 一键批量将 csv 文件转化成 xml 文件。

逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列,通常都是纯文本文件。

可扩展标记语言,标准通用标记语言的子集,简称XML。是一种用于标记电子文件使其具有结构性的标记语言。在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。

二、Python代码实现

导入用到的库

from xml.etree.ElementTree import Element, ElementTree
import csv
from pathlib import Path
import os

创建一个文件夹,用来保存转换后的xml文件

# 创建一个文件夹  用来保存转换后的xml文件
path = os.path.join('xml_file')
if not os.path.exists(path):
    os.mkdir(path)

获取所有待转换的csv文件

# 获取所有待转换的csv文件  返回列表
def list_csv():
    file_path = input('请输入你存放csv文件的路径:')
    p = Path(file_path)
    csv_files = p.glob('**/*.csv')
    csv_files = [str(csv_file) for csv_file in csv_files]
    return csv_files

将 csv 文件转换为 xml 文件

# 将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__':
 
推荐文章
坚韧的小刀  ·  利用Saxon和xslt进行xml的格式转换_saxon-he
1 月前
讲道义的脸盆  ·  解析或序列化 XML - XML:可扩展标记语言 | MDN
1 月前
想发财的野马  ·  JavaScript实现解析xml文件数据_js解析xml
1 月前
逃课的黑框眼镜  ·  使用架构(XSD)验证XML文件 - 陈希章
1 月前
爱热闹的莲藕  ·  一条sql 执行查询列表 返回分页数据以及总数 totalCount-CSDN博客
1 年前
踏实的墨镜  ·  elasticsearch实践篇:跨表join查询_es 跨表查询-CSDN博客
1 年前
苦闷的围巾  ·  PostgreSQL的模式、表、空间、用户间的关系 - 掘金
2 年前
飘逸的海龟  ·  junit5单元测试_51CTO博客_java junit单元测试
2 年前
威武的南瓜  ·  python通过爬取汽车之家分析新能源汽车趋势-腾讯云开发者社区-腾讯云
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号