一文秒懂Python读写CSV/XML/JSON文件各种骚操作
本文将介绍Python处理CSV/XML/JSON三种常见文件格式的读写操作。
CSV文件的读写
CSV全称为Comma-Separated Values,即逗号分隔值。CSV是一种纯文本格式,以行为单位,每行为一个记录,以逗号分隔每条记录的各个字段。Python标准库中提供csv
模块,可以轻松地读写CSV文件。
下面是一个示例,读取一份包含学生信息的CSV文件,并以指定格式输出:
import csv
with open('students.csv') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
print(f"Name: {row['Name']}, Age: {row['Age']}, Gender: {row['Gender']}")
在这个示例中,我们首先打开students.csv
文件,然后通过csv.DictReader
方法生成一个可迭代的reader
对象,该对象每次迭代都会返回一个字典对象,其键为CSV文件中的列名,值为该行中该列的值。我们随后就可以使用这个字典对象来操作该条记录的各个字段。
如果我们要将一些数据写入到CSV文件中,则可以使用csv.writer
方法。下面是一个示例代码,通过调用csv.writer
将一些学生的信息写入到students.csv
文件中:
import csv
students = [
{'Name': 'Alice', 'Age': '20', 'Gender': 'Female'},
{'Name': 'Bob', 'Age': '21', 'Gender': 'Male'},
{'Name': 'Charlie', 'Age': '22', 'Gender': 'Male'}
]
with open('students.csv', 'w') as csvfile:
fieldnames = ['Name', 'Age', 'Gender']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for student in students:
writer.writerow(student)
在这个示例中,我们定义了一个包含三个学生信息的列表,并将其写入到students.csv
文件中。需要注意的是,我们需要先使用csv.DictWriter
方法生成一个writer
对象,并指定CSV文件中的列名。接着使用writer.writeheader()
方法写入CSV文件的列名行,然后循环遍历学生信息列表,调用writer.writerow
方法,将每个学生信息写入CSV文件中。
XML文件的读写
XML全称为eXtensible Markup Language,即可扩展标记语言。XML也是一种纯文本格式,以树形结构存储文档内容。Python标准库中提供xml.etree.ElementTree
模块,可以轻松地读写XML文件。
下面是一个示例,读取一份包含书籍信息的XML文件,并以指定格式输出:
import xml.etree.ElementTree as ET
tree = ET.parse('books.xml')
root = tree.getroot()
for book in root.findall('book'):
title = book.find('title').text
author = book.find('author').text
year = book.find('year').text
print(f"Title: {title}, Author: {author}, Year: {year}")
在这个示例中,我们首先使用ET.parse
方法解析books.xml
文件,然后使用getroot
方法获取XML文档的根节点。我们之后循环遍历XML文档中的每个book
节点,并分别使用find
方法获取该节点的title
、author
、year
等子节点,最后打印出每条记录的信息。
如果我们要将一些数据写入到XML文件中,则可以使用ET.Element
方法。下面是一个示例代码,通过调用ET.Element
将一些学生的信息写入到students.xml
文件中:
import xml.etree.ElementTree as ET
students = [
{'Name': 'Alice', 'Age': '20', 'Gender': 'Female'},
{'Name': 'Bob', 'Age': '21', 'Gender': 'Male'},
{'Name': 'Charlie', 'Age': '22', 'Gender': 'Male'}
]
root = ET.Element('students')
for student in students:
student_elem = ET.Element('student')
name_elem = ET.Element('name')
name_elem.text = student['Name']
age_elem = ET.Element('age')
age_elem.text = student['Age']
gender_elem = ET.Element('gender')
gender_elem.text = student['Gender']
student_elem.append(name_elem)
student_elem.append(age_elem)
student_elem.append(gender_elem)
root.append(student_elem)
tree = ET.ElementTree(root)
tree.write('students.xml', encoding='utf-8')
在这个示例中,我们定义了一个包含三个学生信息的列表,并将其写入到students.xml
文件中。我们首先使用ET.Element
方法生成一个名为students
的根节点,并循环遍历学生信息列表,为每个学生创建一个名为student
的节点,并在该节点下添加三个名为name
、age
和gender
的子节点。我们之后使用ET.ElementTree
方法生成名为tree
的XML文档,并调用write
方法将其写入到文件中。
JSON文件的读写
JSON全称为JavaScript Object Notation,即JavaScript对象表示法。JSON同样也是一种纯文本格式,以key-value的形式存储数据。Python标准库中提供json
模块,可以轻松地读写JSON文件。
下面是一个示例,读取一份包含电影信息的JSON文件,并以指定格式输出:
import json
with open('movies.json') as jsonfile:
data = json.load(jsonfile)
for movie in data['movies']:
title = movie['title']
year = movie['year']
genre = movie['genre']
print(f"Title: {title}, Year: {year}, Genre: {genre}")
在这个示例中,我们首先打开movies.json
文件,然后通过json.load
方法生成一个名为data
的Python字典对象。我们之后访问该字典对象中的movies
键,并循环遍历每个电影记录,并获取title
、year
和genre
等字段的值,最后通过print
方法打印出每条记录的信息。
如果我们要将一些数据写入到JSON文件中,则可以使用json.dump
方法。下面是一个示例代码,通过调用json.dump
将一些学生的信息写入到students.json
文件中:
import json
students = [
{'Name': 'Alice', 'Age': 20, 'Gender': 'Female'},
{'Name': 'Bob', 'Age': 21, 'Gender': 'Male'},
{'Name': 'Charlie', 'Age': 22, 'Gender': 'Male'}
]
with open('students.json', 'w') as jsonfile:
json.dump(students, jsonfile, indent=4)
在这个示例中,我们定义了一个包含三个学生信息的列表,并将其写入到students.json
文件中。我们之后调用json.dump
方法将该列表对象写入到文件中,同时设置indent
参数为4,让输出的JSON格式更加易读。
总结
在本文中,我们分别介绍了Python处理CSV/XML/JSON三种常见文件格式的读写操作。在实际应用中,我们需要根据实际情况选择使用哪种格式,以及如何进行读写操作。通过不断的尝试与实践,我们可以更加熟练地掌握这些操作,提高自己的编程水平。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一文秒懂python读写csv xml json文件各种骚操作 - Python技术站