繁体   English   中英

不断循环写入csv文件

[英]continuously writing to csv file in a loop

使用我的完整脚本,我将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)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM