簡體   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