0

0

如何用Python读写CSV文件?

裘德小鎮的故事

裘德小鎮的故事

发布时间:2025-05-06 18:30:02

|

785人浏览过

|

来源于php中文网

原创

如何用python读写csv文件?

用Python读写CSV文件是一项常见的任务,特别是在处理数据分析、数据科学或任何需要批量处理数据的场景中。今天我们就来深入探讨一下如何优雅地使用Python来读写CSV文件,并且分享一些我在实际项目中踩过的坑以及一些优化的小技巧。

当我们谈到读写CSV文件时,Python提供了一个非常方便的内置模块——csv模块。这个模块不仅能让我们轻松地处理CSV文件,还能让我们避免一些常见的陷阱,比如处理不同编码的问题或处理带有特殊字符的数据。

让我们从一个简单的读写CSV文件的例子开始吧:

import csv

# 写入CSV文件
with open('output.csv', 'w', newline='') as file:
    writer = csv.writer(file)
    writer.writerow(['Name', 'Age'])
    writer.writerow(['Alice', 25])
    writer.writerow(['Bob', 30])

# 读取CSV文件
with open('output.csv', 'r') as file:
    reader = csv.reader(file)
    for row in reader:
        print(row)

这个代码片段展示了如何用csv模块写入和读取CSV文件。写入部分,我们创建了一个CSV文件并写入了一些示例数据。读取部分,我们遍历文件中的每一行并打印出来。

立即学习Python免费学习笔记(深入)”;

不过,实际项目中我们常常会遇到一些挑战,比如CSV文件可能包含非ASCII字符,或者文件非常大,导致内存占用过高。以下是一些我在项目中积累的经验和技巧:

首先是处理编码问题。在处理不同来源的数据时,常常会遇到编码问题,比如CSV文件可能是UTF-8、GBK等编码格式。我们可以这样处理:

import csv

# 写入CSV文件,指定编码
with open('output.csv', 'w', encoding='utf-8', newline='') as file:
    writer = csv.writer(file)
    writer.writerow(['名字', '年龄'])
    writer.writerow(['Alice', 25])
    writer.writerow(['Bob', 30])

# 读取CSV文件,指定编码
with open('output.csv', 'r', encoding='utf-8') as file:
    reader = csv.reader(file)
    for row in reader:
        print(row)

这样设置编码,可以确保我们正确处理不同编码的文件,避免出现乱码问题。

极品模板微商城订单系统
极品模板微商城订单系统

微商城订单管理系统是一款基于php+mysql开发的php订单管理系统,她的特点如下: 产品特色: 支持商品规格、订单短信提醒,订单提交限制,站外调用, 批量发货/导出,数据报表,物流轨迹、免签支付等。 1、高度开源:除核心授权文件外全部开源,二开方便。 2、分布式部署:支持分布式部署、支持数据库读写分离。 3、第三方存储:支持附件腾讯云、阿里云、七牛云存储

下载

接下来是处理大文件的问题。如果CSV文件非常大,我们不希望一次性将整个文件读入内存,可以使用csv.DictReadercsv.DictWriter来处理:

import csv

# 写入大文件
with open('large_output.csv', 'w', newline='') as file:
    fieldnames = ['Name', 'Age']
    writer = csv.DictWriter(file, fieldnames=fieldnames)
    writer.writeheader()
    for i in range(100000):  # 假设我们有10万行数据
        writer.writerow({'Name': f'Person{i}', 'Age': i % 100})

# 读取大文件
with open('large_output.csv', 'r') as file:
    reader = csv.DictReader(file)
    for row in reader:
        print(row['Name'], row['Age'])

使用DictReaderDictWriter可以让我们以字典的形式处理每一行数据,这样不仅可以节省内存,还能让代码更加清晰易懂。

关于性能优化,我在项目中发现,如果需要频繁读写CSV文件,可以考虑使用pandas库。pandas不仅提供了强大的数据处理能力,还能显著提升读写CSV文件的速度:

import pandas as pd

# 使用pandas写入CSV文件
data = {'Name': ['Alice', 'Bob'], 'Age': [25, 30]}
df = pd.DataFrame(data)
df.to_csv('output_pandas.csv', index=False)

# 使用pandas读取CSV文件
df_read = pd.read_csv('output_pandas.csv')
print(df_read)

使用pandas不仅可以简化代码,还能处理更复杂的数据操作,比如数据清洗、统计分析等。

在实际应用中,我也遇到了一些常见的问题,比如CSV文件中可能包含引号、逗号等特殊字符,这时需要特别处理:

import csv

# 写入包含特殊字符的数据
with open('special_output.csv', 'w', newline='') as file:
    writer = csv.writer(file, quoting=csv.QUOTE_ALL)
    writer.writerow(['Name', 'Description'])
    writer.writerow(['Alice', 'She said, "Hello, world!"'])
    writer.writerow(['Bob', 'He likes "Python"'])

# 读取包含特殊字符的数据
with open('special_output.csv', 'r') as file:
    reader = csv.reader(file)
    for row in reader:
        print(row)

使用csv.QUOTE_ALL参数可以确保所有字段都被引号包围,这样可以正确处理包含逗号和引号的字段。

总结一下,用Python读写CSV文件是一个非常灵活且强大的工具。通过csv模块,我们可以轻松处理各种CSV文件,但也要注意一些细节,比如编码问题、大文件处理、特殊字符处理等。同时,pandas库提供了一种更高效的解决方案,特别是在处理大规模数据时。希望这些经验和技巧能帮助你在实际项目中更加得心应手。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Python 时间序列分析与预测
Python 时间序列分析与预测

本专题专注讲解 Python 在时间序列数据处理与预测建模中的实战技巧,涵盖时间索引处理、周期性与趋势分解、平稳性检测、ARIMA/SARIMA 模型构建、预测误差评估,以及基于实际业务场景的时间序列项目实操,帮助学习者掌握从数据预处理到模型预测的完整时序分析能力。

70

2025.12.04

常见的编码方式
常见的编码方式

常见的编码方式有ASCII编码、Unicode编码、UTF-8编码、UTF-16编码、GBK编码等。想了解更多编码方式相关内容,可以阅读本专题下面的文章。

599

2023.10.24

a和A对应的ASCII码数值
a和A对应的ASCII码数值

a的ascii码是65,a的ascii码是97;ascii码表中,一个字母的大小写数值相差32,一般知道大写字母的ascii码数值,其对应的小写字母的ascii码数值就算出来了,是大写字母的ascii码数值“+32”。想了解更多相关的内容,可阅读本专题下面的相关文章。

2153

2024.10.24

PHP 高并发与性能优化
PHP 高并发与性能优化

本专题聚焦 PHP 在高并发场景下的性能优化与系统调优,内容涵盖 Nginx 与 PHP-FPM 优化、Opcode 缓存、Redis/Memcached 应用、异步任务队列、数据库优化、代码性能分析与瓶颈排查。通过实战案例(如高并发接口优化、缓存系统设计、秒杀活动实现),帮助学习者掌握 构建高性能PHP后端系统的核心能力。

102

2025.10.16

PHP 数据库操作与性能优化
PHP 数据库操作与性能优化

本专题聚焦于PHP在数据库开发中的核心应用,详细讲解PDO与MySQLi的使用方法、预处理语句、事务控制与安全防注入策略。同时深入分析SQL查询优化、索引设计、慢查询排查等性能提升手段。通过实战案例帮助开发者构建高效、安全、可扩展的PHP数据库应用系统。

89

2025.11.13

JavaScript 性能优化与前端调优
JavaScript 性能优化与前端调优

本专题系统讲解 JavaScript 性能优化的核心技术,涵盖页面加载优化、异步编程、内存管理、事件代理、代码分割、懒加载、浏览器缓存机制等。通过多个实际项目示例,帮助开发者掌握 如何通过前端调优提升网站性能,减少加载时间,提高用户体验与页面响应速度。

30

2025.12.30

C++ 设计模式与软件架构
C++ 设计模式与软件架构

本专题深入讲解 C++ 中的常见设计模式与架构优化,包括单例模式、工厂模式、观察者模式、策略模式、命令模式等,结合实际案例展示如何在 C++ 项目中应用这些模式提升代码可维护性与扩展性。通过案例分析,帮助开发者掌握 如何运用设计模式构建高质量的软件架构,提升系统的灵活性与可扩展性。

8

2026.01.30

c++ 字符串格式化
c++ 字符串格式化

本专题整合了c++字符串格式化用法、输出技巧、实践等等内容,阅读专题下面的文章了解更多详细内容。

9

2026.01.30

java 字符串格式化
java 字符串格式化

本专题整合了java如何进行字符串格式化相关教程、使用解析、方法详解等等内容。阅读专题下面的文章了解更多详细教程。

8

2026.01.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.4万人学习

Django 教程
Django 教程

共28课时 | 3.7万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号