1、csv模块
CSV (Comma Separated Values),即逗号分隔值(也称字符分隔值,因为分隔符可以不是逗号),是一种常用的文本格式,用以存储表格数据,包括数字或者字符。
2、namedtuple(具名元组)
因为元组的局限性:不能为元组内部的数据进行命名,所以往往我们并不知道一个元组所要表达的意义,所以在这里引入了 collections.namedtuple 这个工厂函数,来构造一个带字段名的元组。具名元组的实例和普通元组消耗的内存一样多,因为字段名都被存在对应的类里面。
namedtuple 对象的定义如以下格式:
collections.namedtuple(typename, field_names, verbose=False, rename=False)
返回一个具名元组子类 typename,其中参数的意义如下:
typename:元组名称
field_names: 元组中元素的名称
rename: 如果元素名称中含有 python 的关键字,则必须设置为 rename=True
verbose: 默认就好
3、数据读取和写入
import csv
from collections import namedtuple
def csv_writer():
"""写入csv文件"""
headers = ['编号', '课程', '讲师']
rows = [
(1, 'python', 'Eason'),
(2, 'c#', 'Jack'),
(3, 'Django', 'Mike'),
(4, '.NET', 'John')
]
with open('my_course.csv','w',encoding='utf8', newline='') as f:
writer = csv.writer(f) #可写入列表或元组的对象
writer.writerow(headers) # 写入一行
writer.writerows(rows) # 写入多行
def csv_reader():
"""读取csv文件"""
with open('my_course.csv','r',encoding='utf8') as f:
reader=csv.reader(f) #返回每行是一个列表的迭代器对象
headers=next(reader) #获取文件第一项表头
print(headers)
for row in reader:
print(row