为什么代码抛出“AttributeError:'NoneType'对象没有属性'group'”?

时间:2017-12-12 02:07:37

标签: python attributeerror nonetype

我试图运行我的代码,但它抛出“AttributeError:'NoneType'对象没有属性'group'”,我似乎无法安装正则表达式。我读到它是内置的,但我不知道该怎么做。这是抛出错误的代码:

while i>0:
    print("Number "+str(i))
    src = str(br.parsed())
    start1 ="¿"
    end1 = "?<"
    result = re.search('%s(.*)%s' % (start1,end1), src).group(1) 
    print(str(result))
    question_index=questions.index(result)
    print("The answer is " + answers[question_index])
    question_form = br.get_form()
    question_form["user_answer"]=answers[question_index]
    br.submit_form(question_form)
    i=i-1 

此行抛出错误:

result = re.search('%s(.*)%s' % (start1,end1), src).group(1)

1 个答案:

答案 0 :(得分:1)

您无需“安装”正则表达式模块re。你是正确的,它是内置的,你有它,它工作正常。如果您没有,当您尝试导入它时,您将获得ImportError

问题是您的正则表达式搜索没有找到任何匹配项,因此它返回None。然后,您立即尝试访问同一行中None中的属性“group”,该行不存在。从.group(1)中分离搜索,检查None的返回类型,并仅在返回不是None时继续。如果re.search()的返回值为None,则执行您想要处理错误的任何内容 - 退出,显示错误消息,HCF,等等。

改变这个:

result = re.search('%s(.*)%s' % (start1,end1), src).group(1)

对于这样的事情:

result = re.search('%s(.*)%s' % (start1,end1), src)
if result is None:
    print("Error! No matches")
    return # or break, exit, throw exception, whatever

result = result.group(1) # reassign just the group you want to "result"
# carry on with the rest of your loop