Python Raise VALUE错误不工作

Python Raise VALUE错误不工作,python,regex,Python,Regex,我正在编写一个Python函数,用正则表达式从字符串中提取数字。在某些情况下,找不到我正在识别的组(“组1”)。在代码的下一步中,我想排除那些找不到的情况,或者通过排除我迭代的特定字符来进一步清理数据。正如我在下面的代码中所看到的,尽管尝试同时引发AttributeError或在None的情况下返回None,但我仍然得到以下错误: if pre_clean.group('group1') is None: AttributeError:“非类型”对象没有属性“组” 有人知道我如何在None情况

我正在编写一个Python函数,用正则表达式从字符串中提取数字。在某些情况下,找不到我正在识别的组(“组1”)。在代码的下一步中,我想排除那些找不到的情况,或者通过排除我迭代的特定字符来进一步清理数据。正如我在下面的代码中所看到的,尽管尝试同时引发AttributeError或在None的情况下返回None,但我仍然得到以下错误:

if pre_clean.group('group1') is None:
AttributeError:“非类型”对象没有属性“组”

有人知道我如何在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,"")
def parse_字符串(输入):
parse_reg=''
^(?P\(\d{6}\)\s*
[-]*
(?P\d{10})
(?P\d{2})''
re_parsecmp=re.compile(parse_reg)
pre_clean=re_parsecmp.match(输入)
“清洁区号仅为位数”
deletechars='-(*)和'#要删除的图表
如果pre_clean.group(“group1”)为无:
提高属性错误
#一无所获
pre_clean2=手机零件组(“区号”)
pre_clean3=pre_clean2.strip()
对于deletechars中的char:
pre_clean3=pre_clean3.替换(字符“”)

在调用方法之前,您需要先检查
pre\u clean

if pre_clean is None or pre_clean.group('group1') is None:
        raise AttributeError

这是不言自明的,您不会遇到与您遇到的相同的错误。

似乎非常简单。
re\u parsecmp.match(输入)
正在返回None。不应在没有必要的情况下引发异常。如果您可以从函数返回,为什么要引发异常?谢谢。我不知道匹配步骤中发生了错误。谢谢。