2016-04-28 60 views
1
import csv 
if __name__ == "__main__": 
    words = ["great" , "thanks"] 
    with open("data/sentiwordnet.tsv", "r") as f: 
     reader = csv.DictReader(f,delimiter='\t') 
     for word in xrange(len(words)): 
      for row in reader: 
       if row['word_en'] == words[word]: 
        print float(row["positive"]) 
        print float(row["negative"]) 
        print row["synset"] 

結果:以上意外輸出,而讀csv文件在for循環中

0.75 
0.0 
124567 

結果只對第1個字,即「大」。循環在這裏結束 - 它不會繼續到下一個單詞。

+0

你確定if條件適用於任何超過你的第一個詞 – Natecat

+0

也許'謝謝'不存在於你的文件? –

+1

你可以用'用單詞表達':'而不是在你的變量命名中更加明確。 –

回答

5

一旦遍歷reader中的行,它將不會奇蹟般地重新啓動。讓您通過reader迭代一次交換for循環:

for row in reader: 
    for word in xrange(len(words)): 

我只是避免迭代兩次只是檢查,如果每個字是一組你有興趣的話它會跑得更快:

import csv 

if __name__ == "__main__": 
    words = {"great" , "thanks"} # sets are faster than lists for checking containment 

    with open("data/sentiwordnet.tsv", "r") as f: 
     reader = csv.DictReader(f, delimiter='\t') 

     for row in reader: 
      if row['word_en'] in words: 
       print float(row["positive"]) 
       print float(row["negative"]) 
       print row["synset"] 

您可能還需要考慮使用像包pandas與表工作,它通常使您的生活更輕鬆。