Python CSV:读取和写入电子表格
了解如何在 Python 中处理 CSV 数据。掌握 csv.reader、csv.writer 和 DictReader/DictWriter 以实现高效的表格解析。
概述
CSV(逗号分隔值)是一种普遍存在的格式,用于从电子表格和关系数据库导出和导入数据。由于 CSV 文件是简单的文本文件,因此它们受到分析工具、数据库平台和编程语言的普遍支持。 Python 具有内置的“csv”模块,专门针对解析、写入和操作表格数据进行了优化,而无需使用 pandas 等第三方库。
csv 模块提供两个主要接口:基于列表的读取器/写入器和基于字典的读取器/写入器。 `csv.reader()` 和 `csv.writer()` 将 CSV 中的每一行表示为字符串列表,这很简单,但需要通过数字索引引用列。为了获得更强大的方法,开发人员使用“csv.DictReader()”和“csv.DictWriter()”。这些类使用 CSV 标题行作为键将每一行映射到字典,从而生成高度可读的代码,即使对列重新排序也不会中断。
处理 CSV 文件时,语法细节很重要。不同的程序使用不同的分隔符(如制表符或分号)并以不同的方式处理引号或行结尾。 “csv”模块允许您通过“dialect”参数定义自定义分隔符、引用规则和转义字符。此外,在 Python 中打开 CSV 文件时,将 `newline=''` 传递给 `open()` 函数是一个关键要求,以防止不同操作系统之间出现空行问题。
代码和执行输出
使用 DictWriter 将数据写入 CSV 文件并使用 DictReader 读回。
import csv
filename = "employees.csv"
fieldnames = ["id", "name", "department"]
data = [
{"id": "101", "name": "Bob", "department": "HR"},
{"id": "102", "name": "Alice", "department": "Engineering"}
]
# Write dict data to CSV
with open(filename, "w", newline="") as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
writer.writerows(data)
print("CSV written successfully.\n--- Reading CSV ---")
# Read CSV data back as dictionaries
with open(filename, "r", newline="") as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
print(f"Employee {row['name']} works in {row['department']}.")CSV written successfully.
--- Reading CSV ---
Employee Bob works in HR.
Employee Alice works in Engineering.逐步实施
- 导出电子表格记录以进行财务分析
- 将联系人列表目录导入数据库
- 格式化计算脚本的统计输出
常见问题解答
为什么打开 CSV 文件时需要指定 newline=""?
这是 csv 模块的内部编写器所要求的,以防止插入额外的空行,特别是在 Windows 平台上。
如何解析使用制表符而不是逗号的 CSV 文件?
您可以将分隔符参数传递给读取器或写入器,例如 csv.reader(file, delimiter='\t')。
相关主题
推荐的 Python 资源
通过相关的交互式教程、备忘单和代码比较来扩展您的知识。