写入csv,只有最后一行最终在文件python中

时间:2017-07-01 15:15:13

标签: python-3.x loops csv

写入csv文件时,只写入最后一行。

这是代码

   item_keys = []
   item_values = []
   item_values2 = []#to build the list of lists
    # added newline='' because in Python3 this is required to keep an extra row being added
    with open(filename+'.csv','w',newline='') as outfile:
        writer = csv.writer(outfile)
        for key, value in jcr_rows.items():
            if write_header:
            item_keys.append(key)
            item_values.append(value)
        if write_header:
            writer.writerow(item_keys)
            write_header = False
        print(item_values)
        writer.writerow(item_values)

“print(item_values)”显示两个列表:

['', '1.92469', '3.394', '8.1', '98.24', '220.54971', '1.053',
'1932-6203', '3.7', '22,077', '2611', '2.806', 'PLoS One', '2.615',
'77.344', '0.429', 'PLOS ONE', '508,248']
['', '0.00155', 'Not Available', '8.4', '83.54', '0.17802', 
'Not Available', '1024-2708','7.5', '79', '7567', '1.111', 'HONG KONG 
MEDICAL JOURNAL', '1.062','40.584', '0.405', 'HONG KONG MED J', '1,228']

但只有第二个被写入。如果我将写入模式更改为“a”,则每行都会复制标题。

我尝试过使用writer而不是writerow,但是将内容拆分为字符,并且仍然仅用于一行。

我尝试过添加

for x in item_values:
    writer.writerow(x)

这也将一行的字符分开了。

我已经尝试将列表构建到与编写器一起使用的列表列表中,但这些列表也不顺利。

我一直都是这样,现在我正在转动我的车轮。

任何帮助都将不胜感激。

更新: 预期的输出是一行标题,在

下打印了一系列相关数据
JCR Abbreviated Title   Citable Items   ISSN       etc 
PLOS ONE                22,077          1932-6203 
HONG KONG MED J         79              1024-2708

1 个答案:

答案 0 :(得分:1)

好的,我把它整理出来了。我构建了一个列表item_values2.append(item_values),但我的声明中我将item_value变量声明在循环中的错误位置。

然后,我能够使用writerows获得所需的输出。