讲师中心 微信公众号

工具推荐

视频效率加速
Laper
Laper

剧本策划到成片协作

Seko
Seko

AI短剧一键生成成片

updream

一键生成高质量推广成片

立刻MV
立刻MV

低成本歌曲 MV、视频生成

Python CSV 文件读写的注意事项

梦宇同学_5579

梦宇同学_5579

发布时间:2026-02-13 19:38:01

|

933人浏览过

|

来源于php中文网

原创

Windows下读CSV需显式指定encoding:GBK文件用"gbk"或"gb18030",UTF-8文件用"utf-8-sig";pandas中统一用sep而非delimiter,避免冲突;字段含特殊字符时应调整quoting或engine参数。

python csv 文件读写的注意事项

open() 读 CSV 不加 encoding 会乱码

Windows 默认用 GBK 编码存 CSV,而 Python 3 的 open() 在多数系统上默认用 UTF-8 解码。不显式指定编码,中文列名或内容直接变 UnicodeDecodeError 或一堆问号。

  • Windows 上保存的 CSV,优先试 encoding="gbk"(或 "gb18030",兼容性更好)
  • Mac/Linux 或明确是 UTF-8 导出的文件,用 encoding="utf-8-sig" ——-sig 能自动跳过 BOM,避免首列名前多出 \ufeff
  • 别依赖 locale.getpreferredencoding(),它在不同环境返回不稳定,尤其打包成 exe 后常失效

pandas.read_csv() 的 sep 和 delimiter 别混用

sep 和 delimiter 是同一个参数的两个别名,但 pandas 只认 sep 为首选;如果同时传两者,会报 TypeError: read_csv() got multiple values for argument 'sep'。

  • 统一用 sep=",",逗号分隔时可省略;制表符用 sep="\t";中文 Excel 导出的 CSV 有时用 sep=","(全角逗号),需手动确认
  • 遇到字段内含换行或引号,别硬调 sep,先检查是否该用 quoting=csv.QUOTE_MINIMAL(配合 import csv)或设 engine="python" 避免 C 引擎解析失败
  • sep=None 并不会自动推断分隔符,而是触发 csv.Sniffer,但小文件(

写 CSV 时 newline="" 必须显式传给 open()

Windows 下用 open(..., "w") 写 CSV,若不加 newline="",csv.writer 或 to_csv() 会在每行末额外加一个 \r\r\n,导致 Excel 打开时多出空行。

Python Hardener
Python Hardener

通过完整的安全审查、代码整洁重构、健壮的错误处理、正确的日志记录以及完整的文档字符串覆盖,强化 Python 脚本。

下载
  • 正确写法是 open("out.csv", "w", newline="") —— 注意是空字符串,不是 None 或 "\n"
  • pandas.DataFrame.to_csv() 内部已处理这点,不用管 newline,但如果你用 csv.writer 手动写,这步不能漏
  • 这个参数对 Linux/macOS 无害,所以统一加上更安全,别按系统条件判断

to_csv() 的 index 参数一不留神就多出一列

DataFrame.to_csv() 默认写入行索引(即第 0 列是数字序号),看起来像“多了一列”,尤其原始数据本就有 ID 列时,容易误以为数据错位。

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

  • 绝大多数场景应显式写 index=False,除非你真需要把索引当一列导出
  • 如果原 DataFrame 索引是带名的(df.index.name == "user_id"),且你设了 index=True,那导出 CSV 第一列名会是 user_id,但内容仍是行号——这不是 bug,是索引名和索引值分离导致的,得先 reset_index(drop=False) 再导出才一致
  • 用 to_csv(index_label="id") 改列名只在 index=True 时生效,别指望它拯救 index=False 的场景

CSV 看似简单,但编码、换行、索引、分隔符这四点只要漏一个,就可能让下游同学花半小时查不出为啥 Excel 里文字挤在一起、行数对不上、或者第一列莫名多出数字。实际项目里,建议把常用读写逻辑封装成小函数,把 encoding、newline、index 这些都固化下来,比每次临时想保险得多。

热门AI工具

更多
Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

函子Zion

一款支持AI搭建、可视化编辑和多端发布的全栈无代码开发平台。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

相关专题

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

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

360

2025.12.04

Python 数据清洗与预处理实战
Python 数据清洗与预处理实战

本专题系统讲解 Python 在数据清洗与预处理中的核心技术,包括使用 Pandas 进行缺失值处理、异常值检测、数据格式化、特征工程与数据转换,结合 NumPy 高效处理大规模数据。通过实战案例,帮助学习者掌握 如何处理混乱、不完整数据,为后续数据分析与机器学习模型训练打下坚实基础。

292

2026.01.31

Python数据分析与Pandas高级实战
Python数据分析与Pandas高级实战

本专题围绕 Python 数据分析展开,系统讲解 Pandas 的高级用法,包括数据清洗、透视表、时间序列分析以及多表合并与分组操作。通过实战案例,帮助开发者掌握高效处理与分析数据的方法,提高数据处理效率与分析能力。

931

2026.04.13

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

6987

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

2868

2023.08.10

windows查看端口占用情况
windows查看端口占用情况

Windows端口可以认为是计算机与外界通讯交流的出入口。逻辑意义上的端口一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。怎么查看windows端口占用情况呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

3479

2023.07.26

查看端口占用情况windows
查看端口占用情况windows

端口占用是指与端口关联的软件占用端口而使得其他应用程序无法使用这些端口,端口占用问题是计算机系统编程领域的一个常见问题,端口占用的根本原因可能是操作系统的一些错误,服务器也可能会出现端口占用问题。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

3038

2023.07.27

windows照片无法显示
windows照片无法显示

当我们尝试打开一张图片时,可能会出现一个错误提示,提示说"Windows照片查看器无法显示此图片,因为计算机上的可用内存不足",本专题为大家提供windows照片无法显示相关的文章,帮助大家解决该问题。

1548

2023.08.01

Go-Zero API开发使用教程
Go-Zero API开发使用教程

本专题聚焦Go-Zero的API开发,拆解.api描述文件的语法结构、路由与分组定义、参数绑定与校验规则,说明统一响应体、JWT鉴权、跨域与接口文档生成的落地方式,并给出网关聚合与接口测试的实践建议。

20

2026.11.12

热门下载

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

精品课程

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn