我被困住了,不明白为什么我的代码不起作用。谁能帮助我?我得到一个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"]
随时提供有关我的代码的任何其他评论。
答案 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块中处理此异常,或者理解该单词不在列表中的原因
的文档此方法返回找到的对象的索引,否则引发一个 异常表示找不到值。
答案 2 :(得分:0)
我怀疑是因为
word = word.lower()
所以'马林'不在你的名单中,但是'马林'是。假设它在那里。