CSV(逗号分隔值)是一种用于存储表格数据的通用文件格式,而列表是 Python 中用于轻松进行数据操作的基本数据结构。在 Python 中将 CSV 转换为列表,能实现数据的无缝处理、分析及与其他工作流的集成。虽然 Python 内置的 csv 模块可满足基础需求,但 Spire.XLS for Python 凭借类电子表格的直观界面,能更简化结构化 CSV 数据的处理流程。
本文将通过实用代码示例介绍如何使用 Python 读取 CSV 并转化为列表,覆盖从基础到进阶的各类场景。
目录:
为何选择 Spire.XLS ?
Spire.XLS 是一款强大的电子表格处理库,在 CSV 处理方面优势显著:
- 直观的索引:行列索引均从1开始(与电子表格逻辑一致)。
- 灵活的分隔符:可轻松指定自定义分隔符(逗号、制表符、分号等均可)。
- 结构化访问:将 CSV 数据视为工作表,行列遍历更简单直接。
- 强大的数据处理:自动解析数字、日期、字符串等类型,无需额外编写解析代码。
安装步骤
开始前,通过 pip 安装Spire.XLS for Python:
pip install Spire.XLS
该命令会安装最新稳定版本,安装完成后即可直接在项目中使用。
基础转换:Python 将 CSV 转换为列表
若 CSV 文件无标题行(纯数据行),Spire.XLS 可直接读取行数据并将其转换为“列表的列表”(每个子列表对应 CSV 中的一行)。
操作步骤:
- 导入
Spire.XLS模块; - 创建
Workbook对象并加载 CSV 文件; - 获取第一个工作表(Spire.XLS 会自动将 CSV 解析为工作表);
- 遍历行和单元格,提取值并存入 Python 列表。
CSV 转列表的 Python 代码示例:
from spire.xls import *
from spire.xls.common import *
# 初始化工作簿并加载 CSV 文件
workbook = Workbook()
workbook.LoadFromFile("数据.csv", ",")
# 获取第一个工作表
sheet = workbook.Worksheets[0]
# 初始化列表用于存储转换后的数据
data_list = []
# 遍历工作表的每一行
for i in range(sheet.Rows.Length):
row = [] # 存储当前行的数据
# 遍历当前行的每一列
for j in range(sheet.Columns.Length):
cell_value = sheet.Range[i + 1, j + 1].Value
row.append(cell_value)
data_list.append(row) # 将当前行数据加入总列表
# 打印转换结果
for row in data_list:
print(row)
# 释放资源
workbook.Dispose()
输出效果:

如需将列表转回 CSV 格式,可参考:Python 将列表导出为 CSV 文件(含一维/二维/字典列表)
进阶操作:将 CSV 转换为字典列表
对于含标题行的CSV文件,转换为“字典列表”(键为标题、值为行数据)更便于数据操作。
CSV 转字典列表的 Python 代码示例:
from spire.xls import *
# 初始化工作簿并加载CSV文件
workbook = Workbook()
workbook.LoadFromFile("示例.csv", ",")
# 获取第一个工作表
sheet = workbook.Worksheets[0]
# 提取标题行(第一行数据作为字典的键)
headers = []
for j in range(sheet.Columns.Length):
headers.append(sheet.Range[1, j + 1].Value) # 1基索引取第一行
# 初始化列表用于存储字典
dict_list = []
# 遍历数据行(从第二行开始,跳过标题行)
for i in range(1, sheet.Rows.Length):
row_dict = {} # 存储当前行的键值对
for j in range(sheet.Columns.Length):
key = headers[j] # 标题作为键
value = sheet.Range[i + 1, j + 1].Value # 当前单元格值作为值
row_dict[key] = value
dict_list.append(row_dict) # 将字典加入列表
# 打印转换结果
for record in dict_list:
print(record)
# 释放资源
workbook.Dispose()
代码说明:
- 加载CSV:通过
Workbook类的LoadFromFile()方法加载文件,指定分隔符; - 提取标题:将工作表第一行数据作为字典的键,保留列的含义;
- 映射行到字典:遍历数据行时,用标题作为键、单元格内容作为值,构建字典并加入列表。
输出效果:

特殊场景处理
含自定义分隔符的 CSV(如制表符、分号)
处理非逗号分隔的 CSV 文件(如制表符分隔的 TSV 文件)时,只需在 LoadFromFile 中指定分隔符:
# 加载制表符分隔的文件(TSV)
workbook.LoadFromFile("data.tsv", "\t")
# 加载分号分隔的文件(常见于欧洲地区数据)
workbook.LoadFromFile("data_eu.csv", ";")
空值清理技巧
CSV 中的空单元格会被转换为空字符串('')。若需将空值替换为自定义内容(如 “N/A”),可修改单元格值提取逻辑:
# 为空值设置默认值“N/A”
cell_value = sheet.Range[i + 1, j + 1].Value or "N/A"
总结
使用 Spire.XLS 在 Python 中将 CSV 转换为列表的方法十分高效、灵活且对初学者友好。无论您需要“列表的列表”存储原始数据,还是“字典列表”用于结构化分析,该库都能高效处理解析、索引及资源管理。通过本文示例,你可轻松将此转换集成到数据管道、分析脚本或应用程序中。
如需了解更多高级功能(如 CSV 转 Excel、批量处理等),可访问 Spire.XLS for Python 文档。
常见问题解答
Q1:Spire.XLS 是否适用于大型 CSV 文件?
A: 是的,Spire.XLS 能高效处理大型文件。但对于超大规模数据集(数百万行),建议分块处理或结合大数据工具;对于常规业务数据,其性能表现优异。
Q2:与 pandas 相比,用 Spire.XLS 转换 CSV 到列表有何优势?
A: Spire.XLS 提供了对解析过程更多的控制,并且不需要额外的数据科学依赖。虽然 pandas 非常适合分析,但当您需要精确控制 CSV 解析或在没有 pandas 的环境中工作时,Spire.XLS 是理想选择。
Q3:转换为列表时,如何处理带有标题的 CSV 文件?
A: 推荐使用“字典列表”转换法:提取第一行作为标题(字典的键),后续行数据作为值,既能保留列含义,又便于通过列名访问数据。
Q4:如何仅将 CSV 中的特定列转换为列表?
A: 可通过指定目标列索引修改内循环逻辑:
# 仅转换第1列和第3列(对应索引0和2)
target_columns = [0, 2]
for i in range(sheet.Rows.Length):
row = []
for j in target_columns:
cell_value = sheet.Range[i + 1, j + 1].Value
row.append(cell_value)
data_list.append(row)







