2017-12-12 27 views
0

私は自分のコードを実行しようとしましたが、 "AttributeError: 'NoneType'オブジェクトに属性 'group'がありません"と私は正規表現をインストールすることはできません。私はそれが内蔵されていることを読んだが、私は何をすべきか分からない。ここでエラーがスローされたコードは次のとおりです。なぜ、 "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

あなたは正規表現モジュールre「をインストール」する必要はありません。あなたはそれが組み込みであり、持っていて、それはうまくいきます。あなたがそれを持っていなかったら、あなたはそれをインポートしようとしたときImportErrorを得ていたでしょう。

問題は正規表現の検索で一致するものが見つからないため、Noneが返されます。次に、存在しない同じ行のNoneの属性 "group"にただちにアクセスしようとしています。 .group(1)から検索を除外し、返品タイプをNoneにチェックし、返品がNoneでない場合にのみ処理を進めます。 re.search()の戻り値がNoneの場合は、エラー終了メッセージを表示するエラーメッセージHCFを処理します。

変更この:

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 
:このような何かに

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

関連する問題