所以我想将结果保存到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]
答案 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)等。