python – 附加CSV行:DictWriter始终从第一列写入
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 附加CSV行:DictWriter始终从第一列写入,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1244字,纯文字阅读大概需要2分钟。
内容图文
![python – 附加CSV行:DictWriter始终从第一列写入](/upload/InfoBanner/zyjiaocheng/811/b0fc404c440342a4830adc28537ab01b.jpg)
输入文件:
$cat test.csv
company,spread,cat1,cat2,cat3
A,XYZ,32,67,0
B,XYZ,43,0,432
C,XYZ,32,76,32
D,XYZ,454,87,43
E,XYZ,0,0,65
F,XYZ,0,0,7
预期的CSV输出(Sum列cat1,cat2和cat3并附加总和.):
$cat test.csv
company,spread,cat1,cat2,cat3
A,XYZ,32,67,0
B,XYZ,43,0,432
C,XYZ,32,76,32
D,XYZ,454,87,43
E,XYZ,0,0,65
F,XYZ,0,0,7
,,561,230,579
码:
import csv
all_keys = ['cat1', 'cat2', 'cat3']
default_values = {i: 0 for i in all_keys}
def read_csv():
with open('test.csv', 'r') as f:
reader = csv.DictReader(f)
yield from reader
for row in read_csv():
for i in all_keys:
default_values[i] += int(row[i])
with open('test.csv', 'a') as w:
writer = csv.DictWriter(w, fieldnames=all_keys)
writer.writerow(default_values)
实际产量:
$cat test.csv
company,spread,cat1,cat2,cat3
A,XYZ,32,67,0
B,XYZ,43,0,432
C,XYZ,32,76,32
D,XYZ,454,87,43
E,XYZ,0,0,65
F,XYZ,0,0,7
561,230,579
题:
csv.DictWriter没有追加具有正确列对齐的行.我知道我有5列,但我只提供3列的值.但我认为这是DictWriter,它只会将值附加到匹配的列标题.如果我打开我的实际输出CSV,那么列是不对齐的是非常直观的:
解决方法:
您应该在字段名中包含前两个的列名:
with open('test.csv', 'a') as w:
writer = csv.DictWriter(w, fieldnames=['company', 'spread']+all_keys)
writer.writerow(default_values)
如果字典中没有键,则空白值将写入前两列.
内容总结
以上是互联网集市为您收集整理的python – 附加CSV行:DictWriter始终从第一列写入全部内容,希望文章能够帮你解决python – 附加CSV行:DictWriter始终从第一列写入所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。