文章目录
1. csv文件读操作
1.1 创建reader获取文件内容
1.1.1 csv.reader(文件对象)
返回一个迭代器,迭代器中的元素就是每一行内容对应的列表
RIGHT Example:
data1 = csv.reader(open(r'2018年北京积分落户数据.csv', encoding='utf-8', newline=''))
# 获取迭代器中的内容
print(next(data1))
print(next(data1))
print(next(data1))
1.1.2 csv.DictReader(文件对象)
返回一个迭代器,迭代器中的元素就是每一行内容对应的字典(第一行数据是键)
RIGHT Example:
data2 = csv.DictReader(open(r'2018年北京积分落户数据.csv', encoding='utf-8', newline=''))
# 获取迭代器中的内容
print(next(data2))
print(next(data2))
print(next(data2))
1.1.3 案例
APPLICATION 计算积分的平均值:
class BeiJingData:
def __init__(self, data):
self.data = data
def average(self):
scores = [eval(x['score']) for x in self.data]
return f'{sum(scores) / len(scores):.2f}'
if __name__ == '__main__':
data3 = csv.DictReader(open('2018年北京积分落户数据.csv', encoding='utf-8'))
test = BeiJingData(data3)
print(test.average())
2. csv文件写操作
2.1 以列表为单位写入数据
(1)创建writer
RIGHT Example:
writer = csv.writer(open('2018年北京积分落户数据.csv', 'a', encoding='utf-8', newline=''))
(2)写入数据
RIGHT Example:
# 一次写入一行数据
writer.writerow(['name', 'age', 'gender', 'tel', 'score'])
writer.writerow(['小明', 18, '男', '110', '98'])
# 同时写入多行数据
writer.writerows([
['小花', 22, '女', '123', 92],
['张三', 32, '男', '124', 82],
['小红', 12, '女', '126', 62]
])
2.2 以字典为单位写入数据
(1)创建writer:csv.DictWriter(文件对象, 键对应的列表)
RIGHT Example:
writer = csv.DictWriter(
open('2018年北京积分落户数据.csv', 'w', encoding='utf-8', newline=''),
['name', 'age', 'gender', 'tel', 'score']
)
(2)写入数据
RIGHT Example:
# 写入头部数据
writer.writeheader()
# 一次写一行数据
writer.writerow({'name': '小明', 'age': 19, 'gender': '男', 'tel': '110', 'score': '100'})
# 同时写入多行数据
writer.writerows([
{'name': '小明', 'age': 19, 'gender': '男', 'tel': '110', 'score': '100'},
{'name': '小花', 'age': 29, 'gender': '女', 'tel': '120', 'score': '90'}
])