1. ホーム
  2. プログラミング言語
  3. パイソン

python正規表現エラー (AttributeError: 'NoneType' オブジェクトに 'group' 属性がない)

2022-01-22 07:05:19

プロジェクトのシナリオです。

Python初心者がクローリングすると、一部のページが他のページとレイアウトがずれているため、reで設定した条件にマッチせず、python正規表現エラー(AttributeError: 'NoneType' object has no attribute 'group')が発生することがあります。

問題の説明

正規表現のマッチ結果がnullかどうかを判断する手段が必要で、最初はネットに書いてあることを元に読み方を書いたのですが、どれもうまくいかず、最終的にstackoverflowで正しい解決策を見ました。
最初のものは例外処理に try except を使っており、その結果、例外をキャッチできません。

try: # Code that may throw an exception, put it under try
    code1 #If an exception occurs in any line of code inside try, # jump directly to except and execute the code under except, but my code did not catch it.
    code2
except:
    code3
    code4

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2つ目はif判定を使っていますが、Webに書いてあるやり方では私のコードではうまくいきません

import re
test_str = "abcdefghijklmn"
obj = re.compile(r"1(?P<test>. *?) 2",re.S)
result = obj.search(resp.text)
if result.group("test") is None: # here is a direct error
    print("error")  
else:
    print("ok")

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

解決策

import re
test_str = "abcdefghijklmn"
obj = re.compile(r"1(?P<test>. *?) 2",re.S)
result = obj.search(resp.text)
if not result: # Use this to determine if a regular expression matches
    print("error")  
else:
    print(result.group("test"))

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8