← 返回博客

CSV 文本处理完全指南

2026-04-16 · 5 分钟阅读

← 返回博客

CSV 文本处理完全指南

· 5 分钟阅读

CSV 格式基础

CSV(Comma-Separated Values,逗号分隔值)是最通用的表格数据文本格式。每行代表一条记录,字段之间用逗号分隔,第一行通常是标题行。当字段值本身包含逗号或换行符时,需要用双引号将值括起来(引号内的逗号不作为分隔符)。CSV 格式简单但有许多细节陷阱,不同工具对边缘情况的处理方式不同。

CSV 常见问题

命令行处理 CSV

# 查看 CSV 文件前 10 行
head -n 10 data.csv

# 按第二列排序(数字排序,逗号分隔)
sort -t',' -k2 -n data.csv

# 提取第一列和第三列
cut -d',' -f1,3 data.csv

# 统计行数(减去标题行)
wc -l data.csv

# 使用 csvkit(需安装)
# 按列名排序
csvsort -c "column_name" data.csv

# 查看特定列
csvcut -c "name,email" data.csv | csvlook

Python pandas 处理 CSV

import pandas as pd

# 读取 CSV(处理编码和 BOM)
df = pd.read_csv('data.csv', encoding='utf-8-sig')

# 基本清理
df.columns = df.columns.str.strip()  # 去除列名空白
df = df.dropna(how='all')  # 删除全空行
df = df.drop_duplicates()  # 删除重复行

# 清理文本列
df['name'] = df['name'].str.strip().str.title()
df['email'] = df['email'].str.strip().str.lower()

# 按列排序
df_sorted = df.sort_values('date', ascending=False)

# 导出(UTF-8 带 BOM 供 Excel 正确显示)
df.to_csv('output.csv', index=False, encoding='utf-8-sig')

CSV 与其他格式的互转

CSV 经常需要与其他格式互转:CSV 转 JSON(适合 API 数据交换);CSV 转 Excel(保留格式和公式);CSV 转 SQL INSERT 语句(用于数据库导入);CSV 转 Markdown 表格(用于文档);TSV(制表符分隔)与 CSV 互转。在线格式转换工具或 Python pandas 都能高效完成这些转换。

Excel 用户的 CSV 注意事项

Excel 用户使用 CSV 时需要注意:直接双击打开 CSV 文件,Excel 可能将纯数字的字段解释为数字(如邮政编码 "01234" 变成数字 1234,丢失前导零);通过"数据导入"而不是双击打开,可以在导入向导中指定每列的数据类型;保存时选择"CSV (UTF-8)"而不是普通 "CSV",避免中文乱码问题;Excel 的 CSV 导出可能对包含换行符的字段处理不当。

大型 CSV 文件的处理策略

对于超过内存容量的大型 CSV 文件(如 GB 级别),直接加载到内存会失败。处理策略:使用 pandas 的分块读取(chunksize 参数)逐块处理;使用 Polars 库(比 pandas 更内存高效,支持懒加载);使用 DuckDB 将 CSV 文件作为虚拟数据库表查询;使用命令行工具(awk、sort)流式处理;考虑将 CSV 数据导入真正的数据库进行查询。

立即尝试在线工具,无需安装,免费使用。

打开工具 →

立即免费使用相关工具

免费使用 →