一文秒懂python读写csv xml json文件各种骚操作
多年来,数据存储的可能格式显著增加,但是,在日常使用中,还是以 CSV 、 JSON 和 XML 占主导地位。 在本文中,我将与你分享在Python中使用这三种流行数据格式及其之间相互转换的最简单方法,需要的朋友可以参考下 ### Python读写CSV、XML与JSON文件详解 #### 一、引言 随着信息技术的不断发展,数据存储格式也在不断变化,但CSV、JSON和XML仍然是数据处理中最常用的格式。Python作为一门灵活且功能强大的编程语言,提供了丰富的工具来处理这些格式的数据。本文将详细介绍如何在Python中读取和写入这三种格式的数据文件,并演示它们之间的相互转换。 #### 二、CSV数据处理 ##### 1. 使用Python内置库`csv` CSV(Comma-Separated Values)是一种简单的文件格式,用于存储表格数据。Python自带的`csv`模块提供了读写CSV文件的功能。 - **读取CSV文件**: - 使用`csv.reader()`读取CSV文件。 - 可以通过迭代器的方式逐行读取。 - 示例代码如下: ```python import csv filename = "my_data.csv" fields = [] rows = [] # 读取csv文件 with open(filename, 'r') as csvfile: # 创建一个csvreader对象 csvreader = csv.reader(csvfile) # 从文件中第一行中读取属性名称信息 fields = next(csvreader) for row in csvreader: rows.append(row) print("Total no. of rows: %d"%(csvreader.line_num)) ``` - **写入CSV文件**: - 首先定义字段名。 - 使用`csv.writer()`将数据写入文件。 - 示例代码如下: ```python import csv fields = ['Name', 'Goals', 'Assists', 'Shots'] rows = [ ['Emily', '12', '18', '112'], ['Katie', '8', '24', '96'], ['John', '16', '9', '101'], ['Mike', '3', '14', '82'] ] filename = "soccer.csv" with open(filename, 'w') as csvfile: # 创建一个csvwriter对象 csvwriter = csv.writer(csvfile) # 写入字段名 csvwriter.writerow(fields) # 写入数据 csvwriter.writerows(rows) ``` ##### 2. 使用Pandas处理CSV文件 Pandas是一个强大的数据分析库,提供了高效的数据结构DataFrame,以及丰富的数据处理功能。 - **读取CSV文件**: - 使用`pd.read_csv()`函数。 - 示例代码如下: ```python import pandas as pd filename = "my_data.csv" data = pd.read_csv(filename) print(data.head(5)) ``` - **写入CSV文件**: - 使用`DataFrame.to_csv()`方法。 - 示例代码如下: ```python data.to_csv("new_data.csv", sep=",", index=False) ``` #### 三、JSON数据处理 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。 - **读取JSON文件**: - 使用`json.load()`或`json.loads()`函数。 - 示例代码如下: ```python import json with open('data.json') as f: data_list_of_dict = json.load(f) ``` - **写入JSON文件**: - 使用`json.dump()`函数。 - 示例代码如下: ```python data_to_write = {"name": "John", "age": 30, "city": "New York"} with open('data.json', 'w') as f: json.dump(data_to_write, f) ``` - **使用Pandas处理JSON文件**: - 直接使用Pandas读取JSON文件。 - 示例代码如下: ```python data = pd.read_json('data.json') print(data.head()) ``` #### 四、XML数据处理 XML(Extensible Markup Language)是一种标记语言,用于描述数据,可用于存储和传输数据。 - **读取XML文件**: - 使用Python的`xml.etree.ElementTree`模块。 - 示例代码如下: ```python import xml.etree.ElementTree as ET tree = ET.parse('data.xml') root = tree.getroot() for child in root: print(child.tag, child.attrib) ``` - **写入XML文件**: - 创建ElementTree对象并写入文件。 - 示例代码如下: ```python from xml.etree.ElementTree import Element, SubElement, Comment, tostring from xml.dom import minidom def prettify(elem): """Return a pretty-printed XML string for the Element.""" rough_string = tostring(elem, 'utf-8') reparsed = minidom.parseString(rough_string) return reparsed.toprettyxml(indent=" ") root = Element('root') comment = Comment('Generated for Python XML tutorial') root.append(comment) child1 = SubElement(root, 'child') child1.set('name', 'child1') child2 = SubElement(root, 'child') child2.set('name', 'child2') root.append(child2) tree = ET.ElementTree(root) tree.write('output.xml', encoding='utf-8', xml_declaration=True) ``` #### 五、数据格式之间的转换 - **CSV转JSON**: - 使用Pandas进行转换。 - 示例代码如下: ```python import pandas as pd df = pd.read_csv('data.csv') df.to_json('data.json', orient='records') ``` - **JSON转CSV**: - 使用Pandas进行转换。 - 示例代码如下: ```python import pandas as pd df = pd.read_json('data.json') df.to_csv('data.csv', index=False) ``` - **CSV转XML**: - 需要手动构建XML结构。 - 示例代码如下: ```python import csv import xml.etree.ElementTree as ET csv_filename = 'data.csv' xml_filename = 'data.xml' with open(csv_filename, 'r') as csv_file: csv_reader = csv.DictReader(csv_file) root = ET.Element('root') for row in csv_reader: xml_row = ET.SubElement(root, 'row') for key, value in row.items(): field = ET.SubElement(xml_row, key) field.text = value tree = ET.ElementTree(root) tree.write(xml_filename) ``` - **XML转CSV**: - 解析XML文件,然后构建CSV文件。 - 示例代码如下: ```python import xml.etree.ElementTree as ET import csv xml_filename = 'data.xml' csv_filename = 'data.csv' tree = ET.parse(xml_filename) root = tree.getroot() header = [elem.tag for elem in root[0]] with open(csv_filename, 'w', newline='') as csv_file: writer = csv.DictWriter(csv_file, fieldnames=header) writer.writeheader() for elem in root: row_data = {sub_elem.tag: sub_elem.text for sub_elem in elem} writer.writerow(row_data) ``` ### 结语 通过本文的介绍,我们可以看到Python提供了丰富的工具来处理CSV、JSON和XML等数据格式。无论是读取、写入还是格式之间的转换,都有现成的库和方法可供选择。希望这些知识能够帮助你在实际项目中更高效地处理数据。




















- 粉丝: 11
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 基于C的网络军棋设计说明.doc
- 酒店经营管理思路浅述.doc
- 加气块砌筑劳务分包合同.doc
- 基于人工智能实现简单图像识别基础教程
- 建材企业网站策划方案.doc
- 国家开放大学电大《关系营销》网络课判断题题库及答案.docx
- 互联网大健康专家讲座.pptx
- 股指期货投资报告.doc
- 计算机科学与编程导论课程设计参考题目及要求.doc
- 年级主任岗位职责.doc
- 天然防腐剂研究现状综述.docx
- CO-060成本核算.doc
- 秋季幼儿园园务工作计划3.doc
- 基于单片机的恒温箱温度控制系统毕业论文带pid控制.doc
- 基于EAI模式的银行应用系统集成------.pdf
- 物业公司客户服务部主管岗位职责.doc


