CSV文件的读增删改查,综合案例练习详细讲解

题目:

首先,假设我们有一个名为 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文件并打印所有行

import csv

header = ["id", "name", "age", "salary"]  # 增加表头
with open("example.csv", "w", encoding="utf-8-sig", newline="")as file:
    writer = csv.DictWriter(file, header)
    writer.writeheader()#将表头内容写入文件中
    date = [{"id": "1", "name": "Alice", "age": "30", "salary": "2000"},
            {"id": "2", "name": "Bob", "age": "25", "salary": "5000"},
            {"id": "3", "name": "Charlie", "age": "35", "salary": "10000"},
            {"id": "4", "name": "Kim", "age": "40", "salary": "3500"},
            {"id": "5", "name": "Anmy", "age": "32", "salary": "1000"}]
    writer.writerows(date)  # 将数据写入example.csv文件中
with open("example.csv","r",encoding="utf-8-sig",newline="")as file1:
     reader=csv.DictReader(file1)
     for row1 in reader:  # 使用for循环遍历reader读取的内容
         print(f"id:{row1['id']},姓名:{row1['name']},年龄:{row1['age']},薪资: 
               {row1['salary']}")

打印结果如下图所示

2、查找

查找 salay(薪资)大于 3000 的人的并打印特定 ID 的记录

with open("example.csv", "r", encoding="utf-8-sig", newline="")as file1:
     reader = csv.DictReader(file1)
     salarys = []  #创建一个空列表
     for row2 in reader:  #使用for循环遍历
         row = float(row2["salary"])  #将薪资进行强制类型转换 
         if row > 3000:
             salarys.append(row2)  #符合条件添加到列表里
     print(salarys)  #打印列表

3、改

给Kim的薪资增长20%,并打印当前员工信息

with open("example.csv", "r", encoding="utf-8-sig", newline="")as file1, open("new_example.csv", "w", encoding="utf-8-sig", newline="")as f:
     reader = csv.DictReader(file1)
     writer = csv.DictWriter(f, header)
     writer.writeheader()
     for row3 in reader:
        c1 = float(row3["salary"])  # 薪资进行强制类型转换
        if row3["name"] == "Kim":  # 使用if判断语句,当姓名是Kim时
            new_salary = c1 * 1.2  # 新的薪资是原有薪资乘以1.2
            row3["salary"] = new_salary  # Kim最终薪资等于新的薪资
        writer.writerow(row3)  # 将新的数据写入到新的一个csv文件中
        print(row3)  # 打印最终结果

打印结果

新的csv文件中的数据

4、添加

添加新员工Annma(相应信息自己写)并打印当前员工信息

# 这里使用追加(“a”)方法,将新员工写入进去
with open("new_example.csv", "a", encoding="utf-8-sig", newline="")as file2:
         write = csv.DictWriter(file2, header)
# 写入当行数据用writerow,多行数据用writerows
         write.writerow({"id": "6", "name": "Annma", "age": "45", "salary": "8000"})

5、删除

删除员工Bob及其相应信息并打印当前员工的信

with open("new_example.csv", "r", encoding="utf-8-sig", newline="")as file3, open("new1_example.csv", "w", encoding="utf-8-sig", newline="")as f1:
       reader = csv.DictReader(file3)
       writer = csv.DictWriter(f1, header)
       writer.writeheader()
#筛选将姓名不是Bob都写入另一个新的csv文件等同于将Bob的信息删除
       for row4 in reader:
          if row4["name"] != "Bob":
               writer.writerow(row4)
               print(row4)

打印结果如下,关于Bob信息已删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值