循环中连续写入csv文件

2024-06-25 06:35:58 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的完整脚本中,我将90家公司的tweet与它们的关注者的tweet以及其他公司的关注者的tweet进行比较。我试图将所有结果写入一个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)  

每次将一家公司的tweet与他们自己的关注者或另一家公司的关注者的tweet进行比较时,结果如下:

^{pr2}$

这个循环不断地打印结果,直到每个公司的tweet与其他公司的关注者的tweet进行比较。我试图将所有结果写入一个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文件,以便最终将每个公司的所有结果放入文件中?在


Tags: 文件csvfortftransform公司cosmatrix
2条回答

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)

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

相关问题 更多 >