如何跳过python中的recored

时间:2018-04-25 12:10:28

标签: python python-3.x error-handling nonetype

我做一个循环来计算单词列表中出现的单词数。所以我使用下面的代码:

for i in range(len(traindocs_clean)):
    for word in traindocs_clean[i][1][0]:
        if traindocs_clean[i][1] is None:
            continue
        wordDict[word]+=1

但是我知道有些行有null / NoneType / Blank值所以当我运行代码时我会得到关注错误

     for word in traindocs_clean[i][1][0]:
TypeError: 'NoneType' object is not subscriptable

我尝试使用关键字'继续'并且'通过'忽略这些记录并跳转到下一个记录,但显然它不起作用。 我搜索过去的评论和帖子,但我无法得到正确答案,所以如果您认为已经有一些相同的帖子请分享链接,否则我感谢您帮助我解决方案。 谢谢

2 个答案:

答案 0 :(得分:1)

您可以使用try-except块处理异常:

for i in range(len(traindocs_clean)):
    try:
        for word in traindocs_clean[i][1][0]:
            wordDict[word] += 1
    except TypeError:
        pass

注意:最好不要使用pass和log或以正确的方式处理错误。

使用try-except还有另一个好处,即能够处理多个异常和/或在不同情况下运行不同的命令。例如,如果您的代码也容易IndexError,则可以执行以下操作:

    try:
        for word in traindocs_clean[i][1][0]:
            wordDict[word] += 1
    except (TypeError, IndexError):
        pass

或者,如果您想以另一种方式使用IndexError

    try:
        for word in traindocs_clean[i][1][0]:
            wordDict[word] += 1
    except TypeError:
        pass
    except IndexError:
        # do something 

答案 1 :(得分:0)

for word in traindocs_clean[i][1][0]:
    if traindocs_clean[i][1] is None:
        continue

if条件检查traindocs_clean[i][1] is None for循环是否已尝试访问(并迭代)raindocs_clean[i][1][0]raindocs_clean[i][1]。如果Noneif,则在traindocs_clean[i][1]条件有机会验证if不是无之前,它将失败。

要解决此问题,您应将for条件移到for i in range(len(traindocs_clean)): if traindocs_clean[i][1] is None: continue for word in traindocs_clean[i][1][0]: wordDict[word] += 1 循环之上:

$(document).ready(function() {
    if([your if clause]) {
       jQuery(".logo-desktop img").attr("src","yournewsource.jpg");
    }
}