gpt4 book ai didi

python - CSV 行附加 : DictWriter always writes from first column

转载 作者:太空狗 更新时间:2023-10-30 02:38:44 26 4
gpt4 key购买 nike

输入文件:

$ 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 输出(对 cat1cat2cat3 列求和并附加总和。):

$ 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,它只会将值附加到匹配的列标题。如果我打开我的 Actual Output CSV,很明显列没有对齐:

enter image description here

最佳答案

您应该在 fieldnames 中包含前两个列的名称:

with open('test.csv', 'a') as w:
writer = csv.DictWriter(w, fieldnames=['company', 'spread']+all_keys)
writer.writerow(default_values)

如果键在字典中不可用,空值将写入前两列。

关于python - CSV 行附加 : DictWriter always writes from first column,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46118681/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com