Skip to main content
 首页 » 编程设计

python之在 for 循环中读取 csv 文件时出现意外输出

2025年05月04日26jpfss

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"] 

结果:

0.75 
0.0  
124567 

以上结果仅针对第一个词,即“great”。循环在这里结束 - 它不会继续到下一个单词。

请您参考如下方法:

一旦您遍历 reader 中的行,它就不会奇迹般地重新启动。交换 for 循环,以便通过 reader 只迭代一次:

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 这样的包对于使用表格,它通常会让您的生活更轻松。