将数组的所有输出保存到CSV文件

时间:2019-03-17 12:54:22

标签: python arrays csv

所以我想将结果保存到CSV文件中,但我一直收到此错误

  

'_ csv.Error:可迭代的预期值,而不是int'

这是我的代码

import csv
word_freqs = {}
words = []

for data in items:
    with open('filepath.csv', 'w') as f:
        writer = csv.writer(f)
        word_freqs[data] = {}
        total = len(item_tokens[data])
        token_lengths = [len(token) for token in item_tokens[data]]
        words.append(token_lengths)
        print(token_lengths)
        writer.writerows(token_lengths)

但是如果我改变

writer.writerows(token_lengths)

writer.writerow(token_lengths)

它可以正确打印输出

  

[6、5、7、1、3、5、7、10、3、7、6、2、9、5、2、7、11、5、6、6]      

[12,2,7,13,12,9,2,2,9,2,10,10]

     

[6、8、12、3、11、3、3、6、7、5、4、4、3、7、7]

     

[5,2,4,2,4,7,1,2,9,5,2,5,4,7,2,6]

但是,将结果保存到CSV文件中时,只会将数组的最后一行保存在CSV中

  

[5,2,4,2,4,7,1,2,9,5,2,5,4,7,2,6]

2 个答案:

答案 0 :(得分:0)

您每次每次迭代项目时都要初始化csv编写器。因此,该过程完成后,您将只剩下最后一行。仅初始化一次。您的for循环必须稍后出现。作为提到的其他答案,请使用writerow

import csv
word_freqs = {}
words = []

with open('filepath.csv', 'w') as f:

    writer = csv.writer(f)

    for data in items:
        word_freqs[data] = {}
        total = len(item_tokens[data])
        token_lengths = [len(token) for token in item_tokens[data]]
        words.append(token_lengths)
        print(token_lengths)
        writer.writerow(token_lengths)

答案 1 :(得分:0)

由于您仍然要在token_lengths中创建所有words的列表,因此您也可以这样做

import pandas as pd
pd.DataFrame(words).to_csv("filepath.csv",index=False)

优点:to_csv允许您在csv中进行很多自定义,例如如何处理不同长度的行(na_rep)等。