Python 读写 CSV 文件:综合指南
Python 读写 CSV 文件:综合指南
什么是 CSV 文件?
CSV(逗号分隔值) 文件以纯文本存储表格数据。每行代表一行,字段间用逗号、分号或其他分隔符分隔。CSV 文件轻量、被电子表格、数据库、数据分析工具广泛支持,是数据交换首选格式。
CSV 示例文件
下面是小型编程语言数据库的典型 CSV 表示。首行为列标题,后续为数据行。
表格数据
| 编程语言 | 设计者 | 出现年份 | 扩展名 |
|---|---|---|---|
| Python | Guido van Rossum | 1991 | .py |
| Java | James Gosling | 1995 | .java |
| C++ | Bjarne Stroustrup | 1983 | .cpp |
CSV 数据
Programming language,Designed by,Appeared,Extension Python,Guido van Rossum,1991,.py Java,James Gosling,1995,.java C++,Bjarne Stroustrup,1983,.cpp
Python 内置 csv 模块
csv 模块提供读写 CSV 文件的低级工具。自动处理引用、分隔符、行终止符,减少手动字符串操作。
关键函数
csv.reader()– 以列表迭代行。csv.DictReader()– 将行转为以列名为键的字典。csv.writer()– 将行写入 CSV 文件。csv.DictWriter()– 将字典写入 CSV 文件。- 方言辅助:
csv.get_dialect()、csv.list_dialects()、csv.register_dialect()、csv.unregister_dialect()。
读取 CSV 文件
下面是最小化、生产就绪的示例,读取 CSV 并将每行作为 Python 列表打印。
import csv
with open('data.csv', mode='r', newline='', encoding='utf-8') as file:
reader = csv.reader(file)
for row in reader:
print(row)
输出:
["Programming language", "Designed by", "Appeared", "Extension"] ["Python", "Guido van Rossum", "1991", ".py"] ["Java", "James Gosling", "1995", ".java"] ["C++", "Bjarne Stroustrup", "1983", ".cpp"]
读取 CSV 为字典
用 csv.DictReader 自动将表头映射为字典键,简化数据处理。
import csv
with open('data.csv', mode='r', newline='', encoding='utf-8') as file:
reader = csv.DictReader(file)
for row in reader:
print(row)
生成字典:
{"Programming language": "Python", "Designed by": "Guido van Rossum", "Appeared": "1991", "Extension": ".py"}
{"Programming language": "Java", "Designed by": "James Gosling", "Appeared": "1995", "Extension": ".java"}
{"Programming language": "C++", "Designed by": "Bjarne Stroustrup", "Appeared": "1983", "Extension": ".cpp"}
写入 CSV 文件
csv.writer 和 csv.DictWriter 类高效写入数据。
import csv
rows = [
["Programming language", "Designed by", "Appeared", "Extension"],
["Python", "Guido van Rossum", "1991", ".py"],
["Java", "James Gosling", "1995", ".java"],
["C++", "Bjarne Stroustrup", "1983", ".cpp"],
]
with open('writeData.csv', mode='w', newline='', encoding='utf-8') as file:
writer = csv.writer(file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
writer.writerows(rows)
生成的 writeData.csv 将与原始示例匹配。
用 Pandas 处理 CSV
Pandas 将数据加载为 DataFrame,以极少代码实现强大数据操作。未安装时用 pip install pandas。
用 Pandas 读取
import pandas as pd
df = pd.read_csv('data.csv')
print(df)
输出:
Programming language Designed by Appeared Extension 0 Python Guido van Rossum 1991 .py 1 Java James Gosling 1995 .java 2 C++ Bjarne Stroustrup 1983 .cpp
用 Pandas 写入
import pandas as pd
data = {
'Programming language': ['Python', 'Java', 'C++'],
'Designed by': ['Guido van Rossum', 'James Gosling', 'Bjarne Stroustrup'],
'Appeared': ['1991', '1995', '1983'],
'Extension': ['.py', '.java', '.cpp'],
}
df = pd.DataFrame(data)
df.to_csv('pandaresult.csv', index=False)
print(df)
生成的 CSV 与原始相同,但 DataFrame 提供高级分析能力。
结论
Python 的 csv 模块和 Pandas 提供稳健、易用的工具读取、写入和操作 CSV 文件。掌握这些库能解锁跨 Web 服务、ETL 管道和科学研究的高效数据工作流。立即实验并将 CSV 处理集成到项目中。
Python