我正在编写一个Python函数来从带有正则表达式的字符串中提取数字。在某些情况下,找不到我正在识别的组(“group1”)。在代码的下一步中,我想排除那些未找到它的情况,否则通过排除我迭代的特定字符来进一步清理数据。如下面的代码所示,尽管尝试同时引发AttributeError或在None的情况下返回None,我仍然会收到以下错误:
if pre_clean.group('group1') is None:
AttributeError:'NoneType'对象没有属性'group'
有没有人知道如何在None情况下成功引发错误,否则继续浏览代码?谢谢。
def parse_string(input):
parse_reg = '''
^(?P<group1> \(\d{6}\)\s*
[-]*
(?P<group2>\d{10})
(?P<group3>\d{2}) '''
re_parsecmp=re.compile(parse_reg)
pre_clean = re_parsecmp.match(input)
'Clean area codes to just digits'
deletechars='-(*)&' #charts to remove
if pre_clean.group('group1') is None:
raise AttributeError
#return None
pre_clean2=phone_parts.group('area_code')
pre_clean3=pre_clean2.strip()
for char in deletechars:
pre_clean3 = pre_clean3.replace(char,"")
答案 0 :(得分:1)
在调用方法之前,您需要首先检查pre_clean
if pre_clean is None or pre_clean.group('group1') is None:
raise AttributeError
这是自我解释的,你不会遇到你遇到的同样的错误。