1.什么是csv?
逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。
2.csv文件的两种读取方式
2.1 reader读取
import csv with open("student.csv","r") as f: # reader是一个迭代器 reader = csv.reader(f) titles = next(reader) # 跳过标题行 for x in reader: name = x[0] age = x[1] print("姓名:%s" %name, "年龄:%s" %age)
输出结果:
姓名:张三 年龄:15
姓名:李四 年龄:16
姓名:王五 年龄:17
使用reader读取的话,存在一个问题,在获取数据的时候,通过下标来获取列,现在第一列式name,如果我把第一列修改为id列,那么数据获取将会出现问题,所以有了
DictReader
2.2 DictReader读取
如果想要获取数据的时候通过标题来获取,那么可以使用DictReader
。
import csv with open("student.csv","r") as f: # 使用DictReader创建的reader对象,不会包含标题那行数据,reader是一个迭代器,遍历这个迭代器,返回的是一个字典 reader = csv.DictReader(f) for x in reader: value = {"姓名":x["name"],"年龄":x["age"]} print(value)
输出结果:
{'姓名': '张三', '年龄': '15'}
{'姓名': '李四', '年龄': '16'}
{'姓名': '王五', '年龄': '17'}
3.csv文件的两种写入方式
3.1 writer写入
import csv title = ["empno","ename","owner"] value = [ ('A001','关羽','刘备'), ('A002','张飞','刘备'), ('A003','夏侯惇','曹操'), ('A004','郭嘉','曹操'), ] with open("emp.csv", "w", encoding="utf-8", newline='') as f: # 默认的newline为\n writer = csv.writer(f) writer.writerow(title) writer.writerows(value)
运行后结果:
3.2 DictWriter写入
import csv title = ['empno','ename','owner'] value = [ {'empno':'A001','ename':'关羽','owner':'刘备'}, {'empno':'A002','ename':'张飞','owner':'刘备'}, {'empno':'A003','ename':'夏侯惇','owner':'曹操'}, {'empno':'A004','ename':'郭嘉','owner':'曹操'}, ] with open("emp.csv", "w", encoding="utf-8", newline='') as f: # 默认的newline为\n writer = csv.DictWriter(f,title) # 写入表头直接调用writeheader()方法即可 writer.writeheader() writer.writerows(value)
运行后结果:
来源:https://www.cnblogs.com/OliverQin/p/12631259.html