【笔记】2022.5.7 csv文件操作

本文详细介绍了如何使用Python的csv模块进行文件读写操作,包括reader和DictReader的用法,并通过实例演示了如何计算积分数据的平均值。此外,还展示了如何以列表和字典形式写入CSV文件,适合数据处理初学者和开发者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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'}
])

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sprite.Nym

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值