项目场景:
初学python爬虫爬取一些页面时,某些页面和其他页面排版不一致,会导致re里设置的条件不匹配,出现python正则表达式错误(AttributeError: ‘NoneType’ object has no attribute ‘group’)。
问题描述:
现在需要一些手段判断正则表达式匹配结果是否为空,我先根据网上说的方法写了一些判读方法,但是都不可以,最后在stackoverflow看到了正确解决方法。
第一种使用try except处理异常,结果无法捕获异常
try: #可能会出现异常的代码,放在try下
code1 #如果try内部任意一行代码出现异常,# 直接跳转至except,执行except下代码,但是我的代码没有捕获成功
code2
except:
code3
code4
第二种使用if 判断但是网上说的判断方法在我的代码里面不起作用
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: #这里直接报错
print("error")
else:
print("ok")
解决方案:
import re
test_str = "abcdefghijklmn"
obj = re.compile(r"1(?P<test>.*?)2",re.S)
result = obj.search(resp.text)
if not result: #使用此种判断方式来判断正则表达式是否匹配
print("error")
else:
print(result.group("test"))