You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中更高效读取CSV文件的方法及自定义分隔符实现

Python CSV读取的高效方法与分隔符设置

一、能否指定非逗号分隔符?

完全可以,csv.reader本身就支持通过delimiter参数自定义分隔符,你的代码可以直接修改适配:

import csv

with open(filename, 'r') as csvfile:
    # 示例:用制表符作为分隔符,也可替换为分号`;`、竖线`|`等任意字符
    csvreader = csv.reader(csvfile, delimiter='\t')
    fields = next(csvreader)
    rows = []
    for row in csvreader:
        rows.append(row)

另外如果CSV里存在带引号包裹的字段(比如字段内容本身包含分隔符),csv.reader会自动识别处理,不用担心解析错误。

二、更高效的CSV读取方法

如果处理的是大体积CSV文件,原生csv模块的效率确实有限,推荐两种更高效的方案:

1. 使用Pandas的read_csv

Pandas的read_csv底层基于C语言实现,读取速度远快于原生csv模块,还能直接将数据转换成DataFrame格式,方便后续分析处理:

import pandas as pd

# 读取文件,可通过delimiter指定分隔符
df = pd.read_csv(filename, delimiter=',')
# 获取表头
fields = df.columns.tolist()
# 转换为列表格式的行数据
rows = df.values.tolist()

针对超大文件,还可以通过chunksize参数分块读取,避免内存溢出:

# 每次读取1000行数据
for chunk in pd.read_csv(filename, chunksize=1000):
    # 处理当前块的数据
    process(chunk)

2. 使用NumPy的genfromtxt/loadtxt

如果你的CSV数据以数值类型为主,NumPy的这两个函数读取效率极高,适合纯数值的数据集:

import numpy as np

# 跳过表头行,读取数值数据
data = np.genfromtxt(filename, delimiter=',', skip_header=1)
# 单独读取表头
fields = np.genfromtxt(filename, delimiter=',', max_rows=1, dtype=str)

如果是小文件场景,原生csv模块已经足够高效,没必要引入额外库;但大文件下,Pandas或NumPy的性能优势会非常显著。

内容的提问来源于stack exchange,提问作者Rodger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 06:06:31