循环中连续写入 CSV 文件



我用我的完整脚本将90家公司的推文与其关注者的推文以及其他公司的关注者的推文进行比较。我正在尝试将所有结果写入一个 csv 文件,但我不确定如何在循环中做到这一点。现在代码中最重要的部分如下所示:

for x in tweets_companies:
for y in tweets_followers:
D1 = " ".join([tweets_companies[x]])
D2 = " ".join([tweets_followers[y]])
documents = [D1, D2]
LemVectorizer.fit_transform(documents)
tf_matrix = LemVectorizer.transform(documents)#.toarray()
tfidfTran = TfidfTransformer(norm="l2")
tfidfTran.fit(tf_matrix)
print(x,y)
tfidf_matrix = tfidfTran.transform(tf_matrix)
cos_similarity_matrix = (tfidf_matrix * tfidf_matrix.T).toarray()
print(cos_similarity_matrix)  

每次将公司的推文与自己的关注者或另一家公司的关注者的推文进行比较时,都会产生以下结果:

company_a followers_b
[[1.        0.2745773]
[0.2745773 1.       ]]

这个循环不断打印结果,直到每个公司的推文与其他公司的关注者的推文进行比较。我正在尝试将所有结果写入一个 csv 文件,但我不确定它如何与此循环配合使用。现在,我有以下内容:

results = [x, y, cos_similarity_matrix]
with open('results.csv', 'w') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(['company', 'followers', 'result'])
writer.writerow(results)  

我把它放在第二个"for"循环中,现在它只将它用python打印的最后结果写入csv文件。如何确保每次都使用新打印的结果更新csv文件,以便最终将每个公司的所有结果放入文件中?

with open('results.csv', 'w') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(['company', 'followers', 'result'])

在循环外部(上方(,并在循环内调用writer.writerow。循环必须在with块内。

每次在第二个循环中打开文件。该文件始终具有相同的名称,并覆盖以前的文件。 移动

with open('results.csv', 'w') as csvfile:
writer = csv.writer(csvfile)

在外部循环外部,只需在内部循环中写入行。

最新更新