题目:
首先,假设我们有一个名为 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信息已删除