DictReader和DictWriter通过字段名操作CSV,自动处理表头,提升代码清晰性与安全性;读取时首行作键名,写入时需指定fieldnames并调用writeheader()。

用 DictReader 和 DictWriter 读写 CSV 文件,能直接按字段名操作数据,省去手动索引列、处理表头的麻烦,代码更清晰、更安全。
自动把首行当字段名,每行返回一个字典,键是列名,值是对应单元格内容。适合结构明确、有标准表头的文件。
fieldnames 参数手动指定)restkey(多出的列归入该键)和 restval(缺失列填默认值)来容错import csv
with open('users.csv', encoding='utf-8') as f:
reader = csv.DictReader(f)
for row in reader:
print(f"{row['name']} 是 {row['age']} 岁,来自 {row['city']}")
初始化时传入 fieldnames 列表,调用 writeheader() 自动写第一行;后续用 writerow() 传入字典即可,键名必须与 fieldnames 完全一致。
fieldnames 决定,不是字典插入顺序(Python 3.7+ 字典有序,但仍建议显式声明)restval 指定填充值newline='' 打开文件,避免 Windows 下空行import csv
data = [
{'name': '张三', 'age': '28', 'city': '北京'},
{'name': '李四', 'age': '32', 'city': '上海'}
]
with open('output.csv', 'w', newline='', encoding='utf-8') as f:
writer = csv.DictWriter(f, fieldnames=['name', 'age', 'city'])
writer.writeheader()
writer.writerows(data)
如果原始 CSV 没有表头,或表头不规范,可以跳过自动解析,手动提供 fieldnames。
立即学习“Python免费学习笔记(深入)”;
fieldnames,并设 header=False(实际是省略首行解析,即不把第一行当字段名)fieldnames,否则 writeheader() 会失败next(reader) 跳过原表头,再配合自定义 fieldnames 重映射列中文 CSV 常见乱码?默认逗号不够用?DictReader/DictWriter 支持传入 dialect 或直接指定参数:
encoding='utf-8-sig' 可兼容 Excel 生成的带 BOM 的 UTF-8 文件delimiter='\t' 支持制表符分隔(TSV),quoting=csv.QUOTE_ALL 强制给所有字段加引号以上就是PythonCSV文件读写技巧_dictreader与dictwriter示例【技巧】的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号