Python读取CSV文件_csv模块使用教程

5次阅读

python开发推荐使用csv模块而非底层_csv;读取用csv.reader(逐行列表)或csv.dictreader(带表头字典);写入用csv.writer或csv.dictwriter;注意编码、换行、字段类型转换等细节。

Python读取CSV文件_csv模块使用教程

Python内置的_csv模块是底层实现,一般不直接使用;实际开发中推荐用csv模块(它封装并导出了_csv的功能),既稳定又易用。

读取csv文件的基本方法

使用csv.reader逐行读取,返回可迭代对象,每行是字符串列表:

  • 先用open()以文本模式打开文件(注意编码,如encoding='utf-8'
  • 传入文件对象给csv.reader(),可指定分隔符(delimiter=',')、引号规则等参数
  • 遍历reader对象,每行自动按逗号拆分,并处理引号、换行、空格等常见格式问题

示例:

import csv
with open(‘data.csv’, encoding=’utf-8′) as f:
  reader = csv.reader(f)
  for row in reader:
    print(row) # 如 [‘Alice’, ’25’, ‘Beijing’]

处理带表头的CSV文件

csv.DictReader更直观:自动把首行当字段名,后续每行返回字典:

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

  • 无需手动跳过标题行,fieldnames参数可自定义列名
  • 通过键名访问数据,比如row['name']row[0]更清晰、抗列序变化
  • 若文件无表头,可传入fieldnames=['id', 'name', 'age']

示例:

with open(‘users.csv’, encoding=’utf-8′) as f:
  reader = csv.DictReader(f)
  for row in reader:
    print(row[‘name’], row[‘age’])

写入CSV文件的对应操作

写入用csv.writercsv.DictWriter,逻辑对称:

  • csv.writer(f).writerow(['a', 'b', 'c'])写一行列表
  • csv.writer(f).writerows([['x','y'], ['m','n']])批量写入
  • DictWriter需先调用writeheader()写表头,再用writerow({})写字典数据
  • 写入时注意指定newline=''避免windows下多出空行

常见问题与注意事项

CSV看似简单,但细节影响正确性:

  • 编码错误最常见——中文乱码多半因没设encoding='utf-8-sig'(兼容bom
  • 含逗号、换行符或引号的字段会被自动加引号保护,解析时csv模块会正确还原
  • 空行默认被跳过,如需保留,可用skipinitialspace=True或手动判断if row:
  • 数值列读出来仍是字符串,需显式转换:int(row[1])或用pandas自动推断类型
text=ZqhQzanResources