为什么我收到此错误? twitter_list_dict.append(line [0])IndexError:列表索引超出范围

时间:2016-04-27 05:06:18

标签: python indexing

Traceback (most recent call last):
  File "D:\myscripts\NewTermSentimentInference.py", line 88, in <module>
    main()
  File "D:\myscripts\NewTermSentimentInference.py", line 34, in main
    tweets = tweet_dict(twitterData)
  File "D:\myscripts\NewTermSentimentInference.py", line 15, in tweet_dict
    twitter_list_dict.append(line[0])
IndexError: list index out of range

代码:

twitterData = sys.argv[0] # csv file

def tweet_dict(twitterData):  
    ''' (file) -> list of dictionaries
    This method should take your csv file
    file and create a list of dictionaries.
    '''
    twitter_list_dict = []
    twitterfile = open(twitterData)
    twitterreader = csv.reader(twitterfile)
    for line in twitterreader:
        **twitter_list_dict.append(line[1])**
    return twitter_list_dict


def sentiment_dict(sentimentData):
    ''' (file) -> dictionary
    This method should take your sentiment file
    and create a dictionary in the form {word: value}
    '''
    afinnfile = open(sentimentData)
    scores = {} # initialize an empty dictionary
    for line in afinnfile:
        term, score  = line.split("\t")  # The file is tab-delimited. "\t" means "tab character"
        scores[term] = float(score)  # Convert the score to an integer.   
    return scores # Print every (term, score) pair in the dictionary


def main():

    tweets = tweet_dict(twitterData)
    sentiment = sentiment_dict("AFINN-111.txt")
    accum_term = dict()

    """Calculating sentiment scores for the whole tweet with unknown terms set to score of zero
    See -> DeriveTweetSentimentEasy
    """

    for index in range(len(tweets)):

        tweet_word = tweets[index].split()
        sent_score = 0 # sentiment of the sentence
        term_count = {}
        term_list = []

尝试进行情绪分析,但在试图从csv文件创建字典的方法中的中面对索引错误,该文件有从twitter访问过的推文,有人可以请帮助我用它?

1 个答案:

答案 0 :(得分:0)

检查输入CSV是否为空行。

如果twitter_list_dict.append(line[0])是一个空列表,则line会抛出'list index out of range'错误,因此没有第一个要引用的元素。最可能的罪魁祸首:CSV中的一行或多行是空的,这会导致csv.reader返回line的空列表。

如果预期CSV中有空行,您可以通过添加检查来跳过它们以确保该行不为空:

for line in twitterreader:
  if line: # Check if line is non-empty
    twitter_list_dict.append(line[0])
return twitter_list_dict