我得到一个我不理解的ValueError

时间:2016-04-15 20:09:22

标签: python list

我被困住了,不明白为什么我的代码不起作用。谁能帮助我?我得到一个ValueError,说'Malin' is not in the list

for line in text_file:
    clean_line = line.translate(None, ',.:;"-_')
    list_of_a_line = clean_line.split()
    #print list_of_a_line
    #How do do I remove both quotation marks?
    for word in list_of_a_line:
        word = word.lower()
        for one_focus_word in focus_words:
            if word.lower() == one_focus_word.lower():
                sentiment_point = 0
                print word
                index_number = list_of_a_line.index(word)
                print index_number

当我阻止代码print list_of_a_line.index(word)的行时,代码有效。所以我可以打印word我可以打印list_of_a_line(请参阅下面打印的列表) ["internet", "IPS", "IPSs", "cobb", "comcast", "centrylink", "paris", "malin" ,"trump"]

随时提供有关我的代码的任何其他评论。

3 个答案:

答案 0 :(得分:1)

你这样做:

for word in list_of_a_line:
    word = word.lower()

以及后来的循环:

            index_number = list_of_a_line.index(word)

这意味着您要查找列表中单词的小写版本,而不是它包含的原始版本。这会引发一个值错误。

您可以使用enumerate获取字词的索引而不使用.index()

for index_number, word in enumerate(list_of_a_line):
    for one_focus_word in focus_words:
        if word.lower() == one_focus_word.lower():
            sentiment_point = 0
            print word
            print index_number

答案 1 :(得分:0)

这意味着'Malin'不在您的列表中,这就是您获得例外的原因。

即:

x = ['a', 'b']
x.index('c')

ValueError:'c'不在列表中

您可以在try / except块中处理此异常,或者理解该单词不在列表中的原因

有关index method

的文档
  

此方法返回找到的对象的索引,否则引发一个   异常表示找不到值。

答案 2 :(得分:0)

我怀疑是因为

word = word.lower()

所以'马林'不在你的名单中,但是'马林'是。假设它在那里。