Python读写CSV、JSON与XML文件全指南及格式互转

Nora
Nora
发布时间:2026-10-13 | 5人浏览过
原创

本文详解Python中CSV、JSON和XML三种主流数据格式的读写方法。通过内置csv、json模块及ElementTree处理XML,结合pandas库实现高效操作。重点演示如何将数据在列表、字典、DataFrame及XML之间相互转换,涵盖从基础读写到高级格式互转的完整流程,助开发者轻松应对数据存储与交换需求。

Python数据处理基础与格式概述

Python凭借其卓越的灵活性与易用性,已成为全球最受欢迎的编程语言之一,尤其在数据科学领域备受青睐。这主要归功于Python在处理大规模数据集时表现出的简洁与高效,使得数据清洗与分析工作变得轻而易举。

当前,几乎所有科技公司都在积极制定数据战略。业界已达成共识:拥有高质量、尽可能完整的数据是获取关键竞争优势的核心要素。有效利用这些数据,能够挖掘出隐藏在表面之下的深层价值与洞察。

尽管多年来数据存储格式日益丰富,但在日常开发与应用中,CSV、JSON和XML依然占据主导地位。本文将介绍在Python环境下处理这三种流行数据格式的最简便方法,并演示它们之间的相互转换技巧。

CSV文件的读写与处理

CSV数据

CSV文件是存储数据最常见的形式,在Kaggle等数据竞赛中,绝大多数数据集均采用此格式。Python内置的csv库提供了读写CSV文件的便捷功能。通常情况下,我们将数据读取为一个列表,其中每个元素也是一个列表,分别代表文件中的一行数据。

参考下方代码,调用csv.reader()即可访问指定的CSV文件。csvreader.next()函数用于从CSV文件中读取一行数据,每次调用都会移动到下一行。此外,推荐使用for row in csvreader语句通过for循环遍历CSV的每一行。需要注意的是,应确保每一行的列数保持一致,否则在处理列表时可能会引发错误。


import csv filename = "my_data.csv" fields = [] rows = [] # 读取csv文件 with open(filename, 'r') as csvfile: # 创建一个csv reader对象 csvreader = csv.reader(csvfile) # 从文件中第一行中读取属性名称信息 # fields = next(csvreader) python3.2 以上的版本使用 fields = csvreader.next() # 接着一行一行读取数据 for row in csvreader: rows.append(row) # 打印前5行信息 for row in rows[:5]: print(row)

在Python中将数据写入CSV文件同样简单。首先单独设置属性名称列表,然后将待写入的数据存储在一个列表中。接下来,创建一个writer()对象,利用它将数据写入文件,这一过程与读取数据的方式非常相似。


import csv # 属性名称 fields = ['Name', 'Goals', 'Assists', 'Shots'] # csv文件中每一行的数据,一行为一个列表 rows = [ ['Emily', '12', '18', '112'], ['Katie', '8', '24', '96'], ['John', '16', '9', '101'], ['Mike', '3', '14', '82']] filename = "soccer.csv" # 将数据写入到csv文件中 with open(filename, 'w+') as csvfile: # 创建一个csv writer对象 csvwriter = csv.writer(csvfile) # 写入属性名称 csvwriter.writerow(fields) # 写入数据 csvwriter.writerows(rows)

当然,借助功能强大的pandas库可以大幅简化数据处理流程。无论是从CSV读取数据还是写入文件,使用pandas都只需一行代码即可完成。


import pandas as pd filename = "my_data.csv" # 读取csv文件数据 data = pd.read_csv(filename) # 打印前5行 print(data.head(5)) # 将数据写入到csv文件中 data.to_csv("new_data.csv", sep=",", index=False)

我们甚至可以利用pandas通过一行代码快速将CSV数据转换为字典列表。在转换为字典列表后,可以进一步使用dicttoxml库将其转换为XML格式,或者直接保存为JSON文件。


import pandas as pd from dicttoxml import dicttoxml import json # 创建一个DataFrame data = {'Name': ['Emily', 'Katie', 'John', 'Mike'], 'Goals': [12, 8, 16, 3], 'Assists': [18, 24, 9, 14], 'Shots': [112, 96, 101, 82] } df = pd.DataFrame(data, columns=data.keys()) # 将DataFrame转化为一个字典并且将它存储到json文件中 data_dict = df.to_dict(orient="records") with open('output.json', "w+") as f: json.dump(data_dict, f, indent=4) # 将DataFrame转化为一个字典并且将它存储到xml文件中 xml_data = dicttoxml(data_dict).decode() with open("output.xml", "w+") as f: f.write(xml_data)

JSON数据的读写与转换

JSON数据

JSON提供了一种清晰且易于阅读的格式,因为它维护了类似字典的数据结构。与CSV类似,Python内置的json模块使得读写JSON文件变得极其简单。从上述示例可以看出,读取CSV数据时,可以将数据存储为字典形式,随后再将该字典写入文件。


import json import pandas as pd # 使用json模块从json文件中读取数据 # 以字典形式存储 with open('data.json') as f: data_listofdict = json.load(f) # 也可以直接使用pandas直接读取json文件 data_df = pd.read_json('data.json', orient='records') # 将字典数据保存为json文件 # 并使用 'indent' and 'sort_keys' 格式化json文件 with open('new_data.json', 'w+') as json_file: json.dump(data_listofdict, json_file, indent=4, sort_keys=True) # 也可以使用pandas将字典结构的数据保存为json文件 export = data_df.to_json('new_data.json', orient='records')

正如前文所述,我们可以通过pandas或Python内置的csv模块轻松将数据存储为CSV文件。而在转换为XML格式时,我们使用了dicttoxml库来实现这一过程。


import json import pandas as pd import csv # 从json文件中读取数据 # 数据存储在一个字典列表中 with open('data.json') as f: data_listofdict = json.load(f) # 以列表中的字典写入倒csv文件中 keys = data_listofdict[0].keys() with open('saved_data.csv', 'w') as output_file: dict_writer = csv.DictWriter(output_file, keys) dict_writer.writeheader() dict_writer.writerows(data_listofdict)

XML数据的解析与特性分析

XML数据

XML与CSV和JSON有所不同。通常情况下,由于CSV和JSON具有简单性而被广泛使用。它们读写和解释起来既简单又快速,无需额外的工作,解析JSON或CSV的过程也非常轻量级。

另一方面,XML的数据量通常较大。如果传输大量数据,意味着需要更多的带宽、存储空间以及运行时间。然而,与JSON和CSV相比,XML确实具备一些额外特性:你可以使用名称空间来构建和共享标准结构,拥有更好的继承表示方式,以及通过XML schema、DTD等方式实现数据的行业标准化表达。

要读取XML数据,我们将使用Python内置XML模块的子模块ElementTree。在此过程中,可以使用xmltodict库将ElementTree对象转换为字典。一旦获得字典,就可以像前文所述那样,将字典转换为CSV、JSON或pandas的DataFrame格式。


import xml.etree.ElementTree as ET import xmltodict import json tree = ET.parse('output.xml') xml_data = tree.getroot() xmlstr = ET.tostring(xml_data, encoding='utf8', method='xml') data_dict = dict(xmltodict.parse(xmlstr)) print(data_dict) with open('new_data_2.json', 'w+') as json_file: json.dump(data_dict, json_file, indent=4, sort_keys=True)

总结

以上介绍了Python读写CSV、XML和JSON文件的各种操作方法,希望对大家有所帮助。如有任何疑问,欢迎留言,小编会及时回复。在此感谢大家对本站的支持!如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表