我试图运行我的代码,但它抛出“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)
答案 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