我试图理解为什么“ if len(w) == 0: continue
”是必要的,但我并不能真正理解它。
如果我说只看2个单词是否匹配wk
如果我说第一个字必须是'From'。
我不是说这个短语有0个以上的单词吗?
练习2:找出上面程序的哪一行仍然没有得到适当的保护。查看是否可以构造一个导致程序失败的文本文件,然后修改该程序,以使该行受到适当保护,并对其进行测试以确保它可以处理新的文本文件。
f = open ('mbox.txt')
wk = ['Sun', 'Mon', 'Tues', 'Wed', 'Thu', 'Fri', 'Sat']
for l in f :
w = l.split()
if len(w) == 0: continue #why is this necessary????
if w[0] != ('From'): continue # si la primera palabra es un "from", pues pasa hacia delate
if w[2] in wk :
print (w[2])
感谢您的帮助:)
答案 0 :(得分:2)
请考虑以下几点:
因此,如果您要检查列表的第3个条目(即words[2]
)是否具有特定值,则必须首先确保该列表中至少有3个条目(即类似{{1 }}),然后才能检查该单词的值是否符合您的期望(即len(words) >= 3
)。
答案 1 :(得分:-1)
当列表中没有第三个元素时,会发生这种情况。我不清楚您为什么要检查第三个元素(我假设它是第二个元素)。
您可以这样做:
'From'
现在,如果文件行中的第二个单词以wk
开头并且第二个单词在 -id
-name
-parent_id
中可用,它将打印文件中的第二个单词。