Python中CSV文件的打印、查找、修改、增添与删除操作实战教程
如何在Python中创建CSV文件,并添加数据。
首先我们要先认识CSV文件,CSV文件是是一种纯文本文件,它使用特定的结构来排列表格数
据,常用于不同程序之间的数据交换。
csv 文件具有格式简单,快速存取,兼容性好等特点,件可以用 Excel 打开,也可以使用文本编辑器打开,比如记事本、Word 等。
csv 文件一般有如下特征:
(1)第一行标识数据列的名称;
(2)之后的每一行代表一条记录,存储具体的数值;
(3)每一条记录的各个数据之间一般用逗号(,)分隔;
了解之后,通过一道案例来掌握知识点
首先,假设我们有一个名为 example.csv 的文件,内容如下:
id,name,age ,salary
1,Alice,30,2000
2,Bob,25 ,5000
3,Charlie,35,10000
4,kim,40,3500
5,anmy,32,1000
1. 读取CSV 文件并打印所有行:
2. 查找salay(薪资)大于 3000 的人的并打印特定 ID 的记录:
3.改给 kim 的薪资增长 20%,并打印当前员工信息
4.添加新员工 Annma(相应信息自己写)并打印当前员工信息
5.删除员工 Bob 及其相应信息并打印当前员工信息
在Python中创建CSV文件,并添加数据
import csv #定义csv模块
#录入表头
head = ['ID', '姓名', '年龄', '收入'] #输入你想要的几种数据名
#每条信息用{}括起,并用,分隔。
#格式为'表头数据名':此条信息对应数据
data = [{'ID': 1, '姓名': 'Alice', '年龄': '30', '收入': 2000},
{'ID': 2, '姓名': 'Bob', '年龄': '25', '收入': 5000},
{'ID': 3, '姓名': 'Charlie', '年龄': '35', '收入': 10000},
{'ID': 4, '姓名': 'kim', '年龄': '40', '收入': 3500},
{'ID': 5, '姓名': 'Aay', '年龄': '32', '收入': 1000}]
#用with语句调用open()函数。因为要创建一个新CSV文件,所有用‘w’模式。
with open('example.csv', 'w', encoding='utf-8')as f:
writer = csv.DictWriter(f, head) #将字典对象写入csv模块。
writer.writeheader() #写入标题行字段名
writer.writerows(data) #将多行文件写入csv文件
运行之后,我们可以在左边项目中找到我们的csv文件
如何打印当前csv文件里的所有数据内容。
#用with语句调用open()函数。因为此文件已存在,所有用‘r’只读模式。
with open('example.csv', 'r', encoding='utf-8')as f:
read = csv.DictReader(f) #csv.reader 对象可以按行读取 csv 文件中的数据
for i in read: #使用 for-in 循环语句依次读取每一条数据元素
#打印出你想打印的数据。
print(f"ID:{i['ID']},姓名: {i['姓名']}, 年龄: {i['年龄']},收入为:{i['收入']}")
打印结果如下:
查找我们所需要的元素信息
with open('example.csv', 'r', encoding='utf-8')as f:
reads = csv.DictReader(f) #csv.reader 对象可以按行读取 csv 文件中的数据
for i in reads: #使用 for-in 循环语句依次读取每一条数据元素
if int(i['收入']) > 3000: #用if语句判断收入是否放大3000
print(f"ID:{i['ID']},姓名: {i['姓名']}, 年龄: {i['年龄']},收入为:{i['收入']}")
运行如下
修改csv文件内数据
with open('example.csv', 'r', encoding='utf-8')as f:
read1 = csv.DictReader(f) #csv.reader 对象可以按行读取 csv 文件中的数据
rows = [] #创建一个空数组
for j in read1: #使用 for-in 循环语句依次读取每一条数据元素
rows.append(j) #用append()函数,将j录入到rows数组中
for j in rows: #使用 for-in 循环语句依次读取rows[]中每一条数据元素
if int(j['ID']) == 4: #用if语句判断,找出kim
j['收入'] = float(j['收入']) * 1.2 #重新赋值
print(f"ID:{j['ID']},姓名: {j['姓名']}, 年龄: {j['年龄']},收入为:{j['收入']}")
#将重新赋值后的数据写入csv文件。
with open('example.csv', 'w', encoding='utf-8')as f:
writer = csv.DictWriter(f, head)
writer.writeheader()
writer.writerows(rows)
运行如下
在csv文件中新增元素
head = ['ID', '姓名', '年龄', '收入'] # 建立一个新CSV文件,将新员工信息实现自己写入
data = [{'ID': input('请输入新员工ID'), '姓名': input('请输入新员工姓名'), '年龄': input('请输入新员工年龄'), '收入': input('请输入新员工收入')},]
with open('examples.csv', 'w', encoding='utf-8')as f:
writer = csv.DictWriter(f, head)
writer.writeheader()
writer.writerows(data)
print('建立成功')
with open('example.csv', 'r', encoding='utf-8')as f1, open('examples.csv', 'r', encoding='utf-8')as f2:
read2 = csv.DictReader(f1)
read3 = csv.DictReader(f2)
all_row = [] #创建3个空数组
row1 = []
row2 = []
for i in read2:
row1.append(i) #将i写入row1中
for j in read3:
row2.append(j) #将j写入row2中
all_row = row1 + row2 #将两个数组合并为一个数组
with open('example.csv', 'w', encoding='utf-8') as f:
writer = csv.DictWriter(f, head)
writer.writeheader()
writer.writerows(all_row)
with open('example.csv', 'r', encoding='utf-8')as f:
read4 = csv.DictReader(f)
for k in read4:
print(f"ID:{k['ID']},姓名: {k['姓名']}, 年龄: {k['年龄']},收入为:{k['收入']}")
运行如下
删除csv文件中的元素
with open('example.csv', 'r', encoding='utf-8')as f:
read5 = csv.DictReader(f)
row3 = []
for c in read5:
if int(c['ID']) != 2: #删除一个元素,我们可以理解为保留其他元素,所以删除ID为2,可以理解为保留除2的所有人。
row3.append(c) #将c录入到row3数组中
with open('example.csv', 'w', encoding='utf-8')as f:
heads = ['ID', '姓名', '年龄', '收入']
writer = csv.DictWriter(f, heads)
writer.writeheader()
for c in row3:
writer.writerow(c)
print(f"ID:{c['ID']},姓名: {c['姓名']}, 年龄: {c['年龄']},收入为:{c['收入']}")
运行如下:
至此案例结束,在csv文件的增删改查中,易错点有以下几种:
1.mode参数是使用’r’,还是’w’。
2.在使用if语句判断的时候,两边类型是否一样。
3.在运用writerows()方法时,应该注意录入的是那个数组。
最后感谢大家借鉴与浏览,祝您生活愉快。
作者:野原GZ