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

物联沃分享整理
物联沃-IOTWORD物联网 » Python中CSV文件的打印、查找、修改、增添与删除操作实战教程

发表回复