繁体   English   中英

为什么代码抛出“AttributeError: 'NoneType' object has no attribute 'group'”?

[英]Why is the code throwing "AttributeError: 'NoneType' object has no attribute 'group'"?

我试图运行我的代码,但是它抛出“AttributeError: 'NoneType' object has no attribute '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)

您不需要“安装”正则表达式模块re 你是正确的,它是内置的,你确实拥有它,并且它工作正常。 如果你没有它,当你试图导入它时,你会得到一个ImportError

问题是您的正则表达式搜索没有找到任何匹配项,因此它返回None 然后,您立即尝试访问同一行中None中不存在的属性“组”。 将搜索从.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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM